我正在开发一个IIS模块,当我的Web服务器上的所有页面发出请求时,该模块将被触发(托管和非托管)。为了实现这一点,我实现了IHttpModule
接口,该接口具有一个必须实现的名为HandleRequest
的方法。在方法上下文中,我可以访问HttpApplication
对象和HttpContext
对象。对象或任何其他位置来告知现在由模块处理的请求是被发布到托管页面(例如,aspx、asmx、web-api、mvc、wcf)还是被发布到非托管页面(例如,jpg、css、htm..)。
代码如下:
public class MyPreIISReqeustModule : System.Web.IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(HandleRequest);
}
protected void HandleRequest(Object sender, EventArgs e)
{
if (managed_page_request)
{......}
else
{......}
}
}
字符串
1条答案
按热度按时间vmjh9lq91#
我发现自己处于同样的情况,无法找到任何简单的属性来指示请求是否是托管的。所以我所做的就是检查Request中的文件是否存在于文件系统中。如果它存在,那么我假设这不是托管请求;否则它是。所以,在你的HandleRequest()方法中:
字符串
它可能并不完美,但它很好地满足了我的需要。边缘情况下,你可能可以显式地处理。