Sco*_*MVP 39
IIS 日志只记录查询字符串和标头信息,没有任何 POST 数据。
如果您使用的是 IIS7,您可以为状态代码 200 启用失败请求跟踪。这将记录所有数据,您可以选择要包含的数据类型。
在 IIS6 或 7 中,您可以在 global.asax 中使用 Application_BeginRequest 并创建您自己的 POST 数据日志记录。
或者,在 IIS7 中,您可以使用自己的自定义日志记录编写 HTTP 模块。
小智 10
在托管代码中,您可以使用 Response.AppendToLog 方法。此方法将数据附加到 cs-uri-stem 字段 - 总长度最多为 4100 个字符(未记录)。如果超过该限制,则将记录的值替换为“...”
例如,将这样的内容添加到 Global.asax 文件应该可以解决问题(C#):
void Application_EndRequest(Object Sender, EventArgs e)
{
if( "POST" == Request.HttpMethod )
{
byte[] bytes = Request.BinaryRead(Request.TotalBytes);
string s = Encoding.UTF8.GetString(bytes);
if (!String.IsNullOrEmpty(s))
{
int QueryStringLength = 0;
if (0 < Request.QueryString.Count)
{
QueryStringLength = Request.ServerVariables["QUERY_STRING"].Length;
Response.AppendToLog( "&" );
}
if (4100 > ( QueryStringLength + s.Length ) )
{
Response.AppendToLog(s);
}
else
{
// append only the first 4090 the limit is a total of 4100 char.
Response.AppendToLog(s.Substring(0, ( 4090 - QueryStringLength )));
// indicate buffer exceeded
Response.AppendToLog("|||...|||");
// TODO: if s.Length >; 4000 then log to separate file
}
}
}
}
小智 5
虽然我很欣赏这是一个老问题,但我发现这段代码正是我所需要的,一个包含完整请求标头和响应的文本文件,将其放入您的 global.asax.cs 中:
protected void Application_BeginRequest(Object Sender, EventArgs e)
{
string uniqueid = DateTime.Now.Ticks.ToString();
string logfile = String.Format("C:\\path\\to\\folder\\requests\\{0}.txt", uniqueid);
Request.SaveAs(logfile, true);
}
Run Code Online (Sandbox Code Playgroud)
这将为每个请求(包括图像)创建一个文本文件,因此在使用它时要小心。我只用它来记录特定的帖子请求。
joe*_*rty -4
尝试在 IIS 日志设置中启用以下设置:
方法(cs-方法)
URI 干 (cs-uri-stem)
URI 查询 (cs-uri-query)
| 归档时间: |
|
| 查看次数: |
57476 次 |
| 最近记录: |