我正在尝试通过在 c# 中ProcessMessage
扩展 Class 使用(SoapMessage 消息)拦截它来向 asmx 调用添加自定义 HTTP 标头。SoapExtension
这里的问题是我所拥有的ProcessMessage()
只是SoapMessage
, 而我需要添加一个自定义 http 标头。
我试过这样做:
HttpContext.Current.Request.Headers.Add("X-MyHeader", "xyz");
但它不起作用。
我正在尝试通过在 c# 中ProcessMessage
扩展 Class 使用(SoapMessage 消息)拦截它来向 asmx 调用添加自定义 HTTP 标头。SoapExtension
这里的问题是我所拥有的ProcessMessage()
只是SoapMessage
, 而我需要添加一个自定义 http 标头。
我试过这样做:
HttpContext.Current.Request.Headers.Add("X-MyHeader", "xyz");
但它不起作用。
我使用以下步骤解决了这个问题:
使用该类构建程序集
namespace HttpWebRequestTest {
public class CustomHttpRequestCreator : IWebRequestCreate
public CustomHttpRequestCreator() { }
public WebRequest Create(Uri uri) {
HttpWebRequest webRequest = Activator.CreateInstance(typeof(HttpWebRequest),
BindingFlags.CreateInstance | BindingFlags.Public |
BindingFlags.NonPublic | BindingFlags.Instance,
null, new object[] { uri, null }, null) as HttpWebRequest;
webRequest.Headers.Add("MyHeader:MyValue");
return webRequest;
}
}
}
将文件添加到 GAC 并在 web.config 中注册
<system.net>
<webRequestModules>
<remove prefix="http:"/>
<remove prefix="https:"/>
<add prefix="http:" type="HttpWebRequestTest.CustomHttpRequestCreator, HttpWebRequestTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2bc4ccb2cdedce53" />
<add prefix="https:" type="HttpWebRequestTest.CustomHttpRequestCreator, HttpWebRequestTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2bc4ccb2cdedce53" />
</webRequestModules>
</system.net>