2010-01-21 116 views
5

我有一个简单的HTTPModule,它执行一些自定义会话状态管理。由HTTPModule拦截的JS,图像和CSS

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会降低性能吗?假设你有几个模块与管道连接,性能影响有多大?如果有人能指出我为此完成的一些基线研究,那将会很好。

回答

12
+0

谢谢。将此添加到http://cassinidev.codeplex.com的待办事项 – 2010-07-24 19:40:11

+0

您的“自我注释”是纯金! Upvotes! – jerhewet 2011-08-23 21:05:35

+0

有没有一种很好的方式在IIS6中实现这一点? 我知道它与这个问题略有无关,但是对于像我这样的人来说,由于仅是问题标题,这将是一个很好的参考。 – 2011-08-25 15:42:56

0

是的,它将被调用任何类型的文件。

在这些模块中通常会筛选出您对前例不感兴趣的任何内容。通过检查HttpContext.Request.Url.AbsolutePath是否包含SharePoint下的'/ _layouts'。

+0

有没有办法配置模块,他们只得到迷上了管道的特定扩展名(如ASPX或ASMX或者我自定义的ashx )? – ram 2010-01-21 21:06:28

+0

这个答案是专门为ASP.NET开发Web服务器(卡西尼) - 你的问题提到IIS7和卡西尼。卡西尼将所有请求路由到任何HttpModules。请注意,这是不同于IIS6或IIS7的行为(需要不同的配置才能获得相同的行为) – Adam 2010-07-30 19:31:28