【问题标题】:How to update/modifiy header-information of a request in .NET?如何在 .NET 中更新/修改请求的标头信息?
【发布时间】:2013-09-24 13:06:51
【问题描述】:

一些背景信息:我基于 Mike Volodarsky 的 this blog-entry 使用 .NET 框架为 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.
}

是否有任何可能的方法来更新传入请求的标头信息?

让我们想象一下我们有一个名为“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
  • 标头:主机,值:localhost:61045
  • 标头:用户代理,值:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1)

现在,我们允许处理程序在 IIS7-Manager 中侦听具有 .aspx 扩展名的文件。 如果我们第二次运行“MyPage.aspx”,PageLoad-Event 会被触发并显示所有标题信息……这就是我的问题。我什么都看不到,因为处理程序正在处理“MyPage.aspx”的传入请求,并且永远不会到达/触发 PageLoad-Event。

也许还有另一种技术可以更新传入请求的标头信息(在 .NET 中)。

非常感谢任何帮助。

【问题讨论】:

    标签: .net http-headers httprequest ihttphandler


    【解决方案1】:

    从您编写的 Http 处理程序中获取代码并在 global.asax 中运行它。

    类似这样的:

    protected void Application_BeginRequest()
    {
        // Manipulate the headers as you see fit.
    }
    

    【讨论】:

    • 亲爱的 Mikael,感谢您在 global.asax 中实现逻辑的提示。奇迹般有效。干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多