我有一个实现IHttpModule的类。这是一个帮助我的应用程序抵御DDOS攻击的支持类。在实现BeginRequest方法之后,我尝试调试代码,由于某些原因,每次调试该类时,Visual studio中都有多个线程。我不明白为什么突然间,当我在本地机器上运行这个应用程序时,我得到了几个线程,而且这种情况只发生在这个类中。
发布于 2012-08-02 00:31:03
HttpModule可能会拦截对应用程序的所有请求,包括文件(js、css、图像等)。
查看每个请求的request对象,并查看Url属性以了解发生了什么。
编辑: HttpModules在请求流的早期是活跃的,它们经常会被服务器的大多数请求击中,所以要将HttpModule中的代码保持在最少。例如:如果您正在对文件进行权限设置,请确保请求实际上正在命中文件(即。请求的url以/files/开头)。只要有可能,缓存数据以便在HttpModules中使用,不要为HttpModule中的每个请求都去数据库!
在实际应用程序中命中率较低的原因可能是,即使是对图像、js文件、css文件等的请求也可能在HttpModule中命中,但在您的应用程序中,只有对应用程序的请求才会命中您的中断点( Web Forms的aspx、asmx等)和ASP.NET MVC中的可识别路由。
要了解您在HttpModule中处理的请求,请查看url变量的值:
void context_BeginRequest(object sender, EventArgs e) {
HttpApplication app = (HttpApplication)sender;
String url = app.Request.Url.OriginalString;
}https://stackoverflow.com/questions/11762656
复制相似问题