我试图通过在c#中扩展ProcessMessage
类来使用SoapExtension
(SoapMessage消息)拦截它来为asmx调用添加自定义HTTP标头。
这里的问题是ProcessMessage()
中的所有内容都是SoapMessage
,而我需要添加自定义http标头。
我试过这样做:
HttpContext.Current.Request.Headers.Add("X-MyHeader", "xyz");
但它不起作用。
答案 0 :(得分:0)
我使用以下步骤解决了这个问题:
使用类
构建程序集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>