如何在ASP.Net中转储响应头

时间:2009-07-26 08:03:49

标签: c# asp.net .net visual-studio-2008 httpresponse

我正在使用VSTS 2008 + C#+ .Net 3.5来开发ASP.Net。我想转储返回给客户端的特定aspx文件的所有响应头。任何想法如何轻松地做到这一点?

我知道如何使用Response.Headers集合,但我的困惑是在哪里枚举以获得准确的响应标头?例如,如果我在Page_Load中枚举,则不能枚举所有响应头,但如果我在Response.Close之后枚举,则会抛出异常。

有什么建议吗?

EDIT1:在VSTS 2008调试模式下使用OnPreRender时遇到以下异常(即按F5进行调试)

{“此操作需要IIS集成管道模式。”}

protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            using (StreamWriter writer = new StreamWriter("dump123.txt", true))
            {
                writer.WriteLine(DateTime.UtcNow + " Response headers");
                foreach (string item in HttpContext.Current.Response.Headers.Keys)
                {
                    writer.WriteLine(item + " : " + HttpContext.Current.Response.Headers[item]);
                }
            }

        }
提前谢谢, 乔治

2 个答案:

答案 0 :(得分:3)

OnPreRender怎么样?这就是在页面呈现之前,并且在所有回发处理发生之后。到那时,一切都应该到位。

马克

答案 1 :(得分:0)

[对于原始问题,这可能已经过时了,但为了可能降落在这里的新人的利益而添加这个答案]

更改Web项目的属性以使用本地IIS进行调试,如下所示:

  1. 浏览到项目属性(右键单击项目节点) 解决方案资源管理器 - >属性或选择项目节点,按 ALT + ENTER)
  2. 选择“构建”标签
  3. 在服务器部分,选择单选按钮“使用本地IIS服务器”在本地IIS中设置虚拟目录,并在此处的设置中指向该URL
  4. 可以找到有关设置的详细教程HERE

    现在当你点击F5时,本地IIS将​​用于调试,你不会得到平台不支持异常/抱怨所需的集成管道模式。