这是大局。我们正在 IIS 6 中运行一台服务器,该服务器托管多个网站和应用程序,并且我们正在将整个服务器迁移到设置略有不同的不同数据中心。我们已经通知了我们的用户并更新了我们的 DNS 信息,这样理论上每个人都会从第一天起就高兴地访问新服务器,但我们知道有人不可避免地会被遗漏。
权力需要一个“监听器”页面/处理程序来接收all向服务器发出请求并将整个请求记录到文本文件中,包括(特别是)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]);
}
}
}
In your web.config
文件添加记录器:
<httpModules>
<add name="MyLogger" type="SimpleLogger, SimpleLogger"/>
</httpModules>
不过要小心。如果您的网站捕获信用卡详细信息或其他敏感数据。您可能需要确保此信息被过滤掉或对其进行加密,并且远离不需要查看此信息的人员。
此外,如果您要记录到文件,请确保日志文件位于任何面向公众的 Web 文件夹之外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)