WCF REST Web服务和HTTP标头

kon*_*g88 3 c# xml rest wcf http-headers

我创建了一个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
    }
}
Run Code Online (Sandbox Code Playgroud)

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);

    }
}
Run Code Online (Sandbox Code Playgroud)

Ari*_*yak 7

您可以使用以下方式访问请求的标题.

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

这里Incoming_Req_Header_Key1是传入标题的关键,如Incoming_Req_Header_Key1: Incoming_Req_Header_Value1request_header_value1 = Incoming_Req_Header_Value1.

作为回应,您可以使用上面的字符串并将更多结果附加到响应中,例如"CustomHeader3"(仅来自您的示例).如果你想将它们附加到响应头,你可以通过使用来实现ctx.OutgoingResponse.Headers.

UPDATE

我使用了以下代码.

在此输入图像描述

这是输出.

在此输入图像描述