Joe*_*oel 7 asp.net post logging iis-6 http
这是大局.我们在IIS 6中运行一个托管多个网站和应用程序的服务器,我们正在将整个事物移动到不同的数据中心,设置略有不同.我们已经通知我们的用户并更新了我们的DNS信息,因此从理论上讲,每个人都会很乐意从第1天开始使用新服务器,但我们知道有人会不可避免地陷入困境.
想要"监听器"页面/处理程序的权力,它将接收对服务器的所有请求并将整个请求记录到文本文件中,包括(特别是)POST数据.
那就是我被困住的地方.我不知道如何实现一个将接收所有服务器请求的处理程序.我隐约了解IIS 6重定向选项,但它们似乎都丢失了重定向上的POST数据.我也对IIS 6的内置日志记录有所了解,但它也忽略了POST数据.
是否有一种简单的(ish)方法将所有请求路由到服务器,以便它们都能在保持后期数据的同时命中一个处理程序?
编辑:这是在WebForms,如果这很重要,但其他解决方案(如果小)绝对值得考虑.
Kev*_*Kev 10
如果所有请求都是POST到ASP.NET表单,那么您可以插入一个HttpModule来捕获并记录这些数据.
您不必重建所有应用程序来部署它.它只需要HttpModule放入每个应用程序的/bin文件夹并将其添加到文件的<httpModules>部分web.config.例如:
using System;
using System.Diagnostics;
using System.Web;
public class SimpleLogger : IHttpModule
{
private HttpApplication _application;
public void Dispose() { }
public void Init(HttpApplication context)
{
_application = context;
context.BeginRequest += new EventHandler(Context_BeginRequest);
}
void Context_BeginRequest(object sender, EventArgs e)
{
foreach (string key in _application.Request.Form.AllKeys)
{
// You can get everything on the Request object at this point
// Output to debug but you'd write to a file or a database here.
Debug.WriteLine(key + "=" + _application.Request.Form[key]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在您的web.config文件中添加记录器:
<httpModules>
<add name="MyLogger" type="SimpleLogger, SimpleLogger"/>
</httpModules>
Run Code Online (Sandbox Code Playgroud)
但要小心.如果您的网站捕获信用卡详细信息或其他敏感数据.您可能需要确保将其过滤掉或加密并远离不应该看到此信息的人员.
此外,如果您要登录文件,请确保日志文件位于任何面向公众的Web文件夹之外.
| 归档时间: |
|
| 查看次数: |
6865 次 |
| 最近记录: |