一些背景信息:我根据Mike Volodarsky 的这篇博客条目,使用 .NET Framework 为 IIS7 创建了一个自定义处理程序和一个自定义模块。
到目前为止,处理程序和模块一切正常,但这是我的问题/场景。
如果处理程序识别给定 URL 上的请求,我需要读取 cookie,获取其信息并将这些数据添加到传入请求的标头中。
到目前为止,这是我为“IHttpHandler”成员编写的代码:
public void ProcessRequest(HttpContext context)
{
var response = context.Response;
//var request = context.Request;
var cookieInformation = GetSomeInformationFromCookie();
if (!string.IsNullOrEmpty(cookieInformation))
{
var nameValueCollection = new NameValueCollection
{{"CustomAspNetHeader", cookieInformation}};
response.Headers.Add(nameValueCollection);
}
// I would like to proceed the current request
// just with the updated header-information.
}
是否有任何可能的方法来更新传入请求的标头信息?
让我们想象一下我们有一个名为“<strong>MyPage.aspx”的页面。在PageLoad-Event中,我们编写如下内容:
foreach (var header in HttpContext.Current.Request.Headers)
{
var value = HttpContext.Current.Request.Headers[header.ToString()];
var s = string.Format("Header: <strong>{0}</strong>, Value: <strong>{1}</strong><br />", header, value);
Response.Write(s);
}
基本上我从 foreach 循环中得到以下信息:
- 标头:连接,值:保持活动
- 标头:接受,值:text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
- 标头:Accept-Encoding,值:gzip、deflate、sdch
- 标题:Accept-Language,值:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
- 标头:Cookie,值:ASP.NET_SessionId=242xbd55fxhxv055hfunnj55
- 标头:主机,值:本地主机:61045
- 标头:用户代理,值:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1)
现在,我们使处理程序能够在 IIS7-Manager 中侦听扩展名为.aspx的文件。如果我们第二次运行“<strong>MyPage.aspx”,PageLoad-Event将被触发并显示所有标题信息......这是我的问题。我什么也看不到,因为处理程序正在处理“MyPage.aspx”的传入请求,并且永远不会到达/触发 PageLoad-Event。
也许还有另一种技术可以更新传入请求的标头信息(在 .NET 中)。
任何帮助是极大的赞赏。