【发布时间】:2008-10-07 00:16:44
【问题描述】:
我正在尝试为 .NET 构建代理模块,但在将标头从当前请求复制到新请求时遇到问题。我正在设置新请求的标头,因为我希望代理支持 SOAP 请求。这是我的代码的一部分。如果需要,我可以发布所有内容,但这是唯一与我遇到的问题相关的部分:
HttpApplication app = (HttpApplication)sender; // sender from context.BeginRequest event
HttpRequest crntReq = app.Request; // set a reference to request object for easier access
HttpWebRequest proxyReq = (HttpWebRequest)HttpWebRequest.Create(crntReq.Url.AbsoluteUri);
// parse headers from current httpcontext.request.headers and add each name->value to the
// new request object
foreach (string header in crntReq.Headers)
{
proxyReq.Headers.Add(header, crntReq.Headers[header]); // throws exception :(
}
当我的代码遇到 foreach 循环时,它会为 Headers.Add 函数引发异常。出于安全目的,我假设该集合具有访问限制。似乎某些标头值可以通过 HttpWebRequest 对象本身的属性访问。但是在这种情况下,我宁愿摆脱抽象并手动设置属性。我收到的异常是:
{“必须使用适当的属性修改此标头。\r\n参数名称:名称”}
在此先感谢您的帮助,
CJAM
【问题讨论】: