5

我有一个简单的 HTTPModule,它可以进行一些自定义会话状态管理。

public void Init(HttpApplication context)
        {
            context.AcquireRequestState += new EventHandler(ProcessBeginRequest);
            ActivityLogger.LogInfo( DateTime.UtcNow.ToLongTimeString() + " In Init " + HttpContext.Current.Request.Url.AbsoluteUri);
        }

public void ProcessBeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest ");
            if (application != null)
            {
                string requestURL = application.Context.Request.Url.ToString();
                ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest " + requestURL);
            }
            return;
        }

当我用断点运行这段代码时,我看到这个模块甚至被像图像、js 和 css 这样的静态文件调用。有没有人经历过这个?我认为 HTTP 模块只是连接到 http 管道中的事件,用于 asp.net 页面。他们是否也与静态资源挂钩?还是只有卡西尼?

环境:VS2008 - 卡西尼服务器

PS:我确实在我们的沙箱中使用 Win2k8 IIS7 尝试过(有点新),并尝试将其写入日志文件(因为我们没有 VS),但无法写入日志文件。确信它有一些写权限问题。谁能指出一些资源,告诉我在 W2k8 中使用 IIS7 运行 ASP.net 时如何设置目录的写权限

Edit1:我知道使用集成管道将扩展 http 管道用于静态和托管资源,例如 http://aspnet.4guysfromrolla.com/articles/122408-1.aspxhttp://learn.iis.net/page.aspx /243/aspnet-integration-with-iis7/

我们在产品中使用经典管道。但仍然有兴趣了解其他人的经历。

问题2:在集成模式下使用IIS7,会降低性能吗?假设您有几个模块与管道连接,性能影响有多大?如果有人能指出为此进行的一些基线研究,那就太好了。

4

2 回答 2

14

看起来有办法做到这一点

http://learn.iis.net/page.aspx/121/iis-70-modules-overview/#Disabling

设置preCondition="managedHandler",并<modules runAllManagedModulesForAllRequests="false" />会做的伎俩

自我注意: http ://code.google.com/p/talifun-web/wiki/StaticFileHandler 需要探索这个 StaticFileHandler

参考:

http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline/

排除 HttpModule 在 IIS7 上运行静态内容

BUG:IIS7 托管请求

http://msdn.microsoft.com/en-us/library/bya7fh0a.aspx

于 2010-01-22T23:06:56.043 回答
0

是的,任何类型的文件都会调用它。

在这些模块中,通常会过滤掉您不感兴趣的任何内容。通过检查 HttpContext.Request.Url.AbsolutePath 在 SharePoint 下是否包含“/_layouts”。

于 2010-01-21T20:50:00.190 回答