我创建了一个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/