ASP.NET 将响应保存到 global.asax 中的文件

Posted

技术标签:

【中文标题】ASP.NET 将响应保存到 global.asax 中的文件【英文标题】:ASP.NET save respose to file in global.asax 【发布时间】:2013-03-01 10:29:37 【问题描述】:

我在生产系统中有一个问题错误,我根本找不到。有时系统会产生无效链接。当最终用户单击它时,我会从系统收到错误报告,最终用户会收到错误消息。失败的 URL 是这样的:

http://www.mysite.com/somepath/undefined/

“未定义”部分是问题,我认为这是由 javascript 产生的,但我想确保它不是来自后端。

如果文件包含字符串“/undefined/”,是否可以使用 global.asax 将每个响应保存到文件中?

我试过这个:

    protected void Application_EndRequest(object sender, EventArgs e)
               
        TextReader t = new StreamReader(Response.OutputStream);
        string content = t.ReadToEnd();
        // look for "/undefined/" and save to a temp file is the easy part after this
    

但是说OutputStream 是不可读的。

我不确定是哪个页面/ajax 请求产生了错误链接,所以我需要检查每个响应。

【问题讨论】:

【参考方案1】:

您无法读取响应流,但可以将响应过滤器添加到输出流,并获取它的副本。

这方面有几篇相关文章:

Logging raw HTTP request/response in ASP.NET MVC & IIS7 在这里 所以 Capturing and Transforming ASP.NET Output with Response.Filter Rick Strahl。

希望对您有所帮助。

【讨论】:

【参考方案2】:

只需检查 IIS 日志文件。我用 url 跟踪所有请求

【讨论】:

感谢您的回复。但我不明白这会有什么帮助。 IIS 日志只告诉我请求了哪些 URL。不是产生错误 URL 的原因。

以上是关于ASP.NET 将响应保存到 global.asax 中的文件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 运行原理剖析

ASP NET Web 表单 URL 重写太慢

asp.net 将 json 发布到控制器

如何在.net 2.0中将数据从数据库或DataTable保存到Excel文件而没有响应

防止将响应值发布到 asp.net 页面而不是支付网关方式

ASP.NET 声音/录音?