我创建了一个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);
}
}
答案 0 :(得分:7)
您可以使用以下方式访问请求的标题。
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
,因此request_header_value1 = Incoming_Req_Header_Value1
。
作为回应,您可以使用上面的字符串并将更多结果附加到响应中,例如“CustomHeader3”(只是您的示例)。如果您想将它们附加到响应标头,可以使用ctx.OutgoingResponse.Headers
。
<强>更新强>
我使用了以下代码。
这是输出。