我创建了一个rest web服务,它返回一个以xml格式传递的简单id。
但是,作为返回的xml的一部分,我希望包含自定义头。我希望能够读取请求头中的数据并在响应中返回其中一些数据。
例如,如果请求包含header1和header2,我希望返回header1和header2作为响应的一部分,同时返回一个新的头header3。
我正在努力弄清楚在哪里以及如何做到这一点,所以任何帮助都会受到感激。
我的代码:
restserviceimpl.svc.cs:

namespace RestService
{
    public class RestServiceImpl : IRestServiceImpl
    {
        #region iRestService Members

        public string XMLData(string id)
        {
            return "You requested product " + id;
        }

        #endregion
    }
}

IRESTServiceImpl.cs:
namespace RestService
{
    [ServiceContract]
    public interface IRestServiceImpl
    {
        [OperationContract]
        [WebInvoke(Method = "GET",
            ResponseFormat = WebMessageFormat.Xml,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "xml/{id}")]
        string XMLData(string id);

    }
}

最佳答案

您可以使用follow访问请求的头。

System.ServiceModel.Web.WebOperationContext ctx = System.ServiceModel.Web.WebOperationContext.Current;
String request_header_value1 = ctx.IncomingRequest.Headers["Incoming_Req_Header_Key1"].ToString();

这里,Incoming_Req_Header_Key1是传入头的键,就像Incoming_Req_Header_Key1: Incoming_Req_Header_Value1,所以请求头的值1=Incoming_Req_Header_Value1
作为响应,您可以使用上面的字符串并将更多结果(如“customheader3”(您的示例)附加到响应中。如果要将它们附加到响应头,可以使用ctx.OutgoingResponse.Headers
更新
我使用了以下代码。
这是输出。

关于c# - WCF REST Web服务和HTTP header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27890468/

10-09 01:17