我需要在C#中进行Web服务调用,并且需要发送自定义HTTP标头的每个请求。我该怎么做。谢谢
答案 0 :(得分:2)
创建一个实现IClientMessageInspector的类。在BeforeSendRequest方法中,将自定义标头添加到外发邮件中。它可能看起来像这样:
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
{
HttpRequestMessageProperty httpRequestMessage;
object httpRequestMessageObject;
if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out httpRequestMessageObject))
{
httpRequestMessage = httpRequestMessageObject as HttpRequestMessageProperty;
if (string.IsNullOrEmpty(httpRequestMessage.Headers[USER_AGENT_HTTP_HEADER]))
{
httpRequestMessage.Headers[USER_AGENT_HTTP_HEADER] = this.m_userAgent;
}
}
else
{
httpRequestMessage = new HttpRequestMessageProperty();
httpRequestMessage.Headers.Add(USER_AGENT_HTTP_HEADER, this.m_userAgent);
request.Properties.Add(HttpRequestMessageProperty.Name, httpRequestMessage);
}
return null;
}
然后创建将消息检查器应用于客户端运行时的端点行为。您可以将该行为应用为属性,或使用行为扩展元素。
这是一个很好的example如何向所有请求消息添加HTTP用户代理标头。我在一些客户中使用它。毫无疑问,您可以为任何标题执行类似的操作。您也可以通过实施IDispatchMessageInspector。
在服务端执行相同操作这是你的想法吗?