我试图根据HttpRequest.UserAgent
为服务器上的所有站点上的某些请求生成404 response。如何从全局web.config中配置的IHttpModule生成404响应?
我已经配置在IHttpModule
服务器的全局web.config
包含下面的代码:
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
if (isBot(context.Request.UserAgent))
{
System.Diagnostics.EventLog.WriteEntry(
"Application",
"\nBotRequestChecker -- request 404d\n" + "Url: " +
context.Request.Url + "\nUserAgent: " + context.Request.UserAgent,
EventLogEntryType.Information);
context.Response.StatusCode = 404;
context.Response.StatusDescription = "Not Found";
context.ApplicationInstance.CompleteRequest();
}
}
设置在浏览器中User-Agent
,并在事件日志中的条目访问一个页面的效果,但页面也返回,没有404状态。
关于我失踪的任何想法?
更新:
的IHttpModule
似乎如果我把它添加到一个单一的网站(该网站的web.config
)工作,只是不适合所有网站。
更新2: 的IHttpModule
仅适用于单个站点的IIS7服务器上,而不是在IIS6。
这就是我最初尝试过的,具有相同的非404结果。 – mike 2011-03-31 18:14:26
编辑我的答案删除...基于此:http://forums.asp.net/p/1148761/1867921.aspx它看起来像你做的是正确的事情。 你能确认代码实际上正在被打? – 2011-03-31 18:16:19
另外,你是真的在IIS 6服务器上测试它,还是现在在VS dev服务器(Cassini)中运行? – 2011-03-31 18:19:28