asp.net - 在 IIS 6/ASP.NET webforms 中记录服务器范围的请求数据(包括 POST 数据)

标签 asp.net http logging post iis-6

这是大图。我们在 IIS 6 中运行一个服务器,该服务器托管多个网站和应用程序,我们正在将整个事情移动到设置略有不同的不同数据中心。我们已经通知了我们的用户并更新了我们的 DNS 信息,这样理论上每个人都会从第一天起就愉快地访问新服务器,但我们知道有人不可避免地会掉入裂缝。

权力需要一个“监听器”页面/处理程序来接收对服务器的所有请求并将整个请求记录到一个文本文件中,包括(尤其是)POST 数据。

这就是我被困的地方。我不知道如何实现一个单一的处理程序来接收对服务器的所有请求。我依稀了解 IIS 6 重定向选项,但它们似乎都丢失了重定向上的 POST 数据。我也知道一点关于 IIS 6 的内置日志记录,但它也忽略了 POST 数据。

是否有一种简单的方法将所有请求路由到服务器,以便它们都命中一个处理程序,同时维护发布数据?

编辑:这是在 WebForms 中,如果重要的话,但其他解决方案(如果小)绝对值得考虑。

最佳答案

如果所有请求都是 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]);
    }
  }
}

在你的web.config文件添加记录器:

<httpModules>
  <add name="MyLogger" type="SimpleLogger, SimpleLogger"/>
</httpModules>

不过要小心。如果您的站点捕获信用卡详细信息或其他敏感数据。您可能需要确保将其过滤掉或将其加密并远离本不应需要查看此信息的人员。

此外,如果您要记录到文件,请确保日志文件位于任何面向公众的 Web 文件夹之外。

关于asp.net - 在 IIS 6/ASP.NET webforms 中记录服务器范围的请求数据(包括 POST 数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3865638/

相关文章:

c# - Azure Web 应用程序加载缓慢且不热(加载 30 秒以上)

asp.net - Razor View 中当前上下文中不存在资源

logging - 如何监控成功登录 Jenkins 服务器的用户日志?

java - OS X 上的 Tomcat 日志文件

asp.net - 我可以使用 HTML 和 javascript 代理选择字段吗?

java - 转发或重定向后表单参数为空

php - 使用 PHP 发送 POST 请求

python - 当服务器没有响应时在 Python 中中止 GET 请求

java - 在 tomcat/shared/lib 中获取 jar 以使用调用它们的 webapp 的配置进行记录

c# - 按 F5 时阻止页面刷新