asp.net-mvc – 静态文件请求正在ASP.NET MVC3中托管代码

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 静态文件请求正在ASP.NET MVC3中托管代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
创建自定义IHttpModules,我已经意识到静态文件(例如.css和.js文件)的请求正在被管理的模块.也许图片有同样的问题.不应该IIS绕过文件系统中存在的文件的ASP.NET?

例如:

public class MyModule:IHttpModule
{
    public void Dispose(){ }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += (o,e) => Debug.Print("Request: " + HttpContext.Current.Request.RawUrl);
    }
}

我以这种方式宣布:

<modules runAllManagedModulesForAllRequests="true">
  <add name="MyModule" preCondition="managedHandler" type="MVCX.Modules.MyModule,MVCX"/>
</modules>

但是,即使使用前提条件,我可以看到静态文件如何通过模块:

Request: /MVCX/
Request: /MVCX/Content/Site.css
Request: /MVCX/Scripts/jquery-1.4.4.min.js

我试图忽略静态文件的规则,但没有什么区别:

routes.IgnoreRoute("{Content}/{*pathInfo}");
routes.IgnoreRoute("{Scripts}/{*pathInfo}");

这是平常吗?还是我在这里遗漏的东西?据我所知,如果静态文件请求应该由IIS应答.如果我的受管模块被击中,意味着CLR ThreadPool线程正在处理该请求,对吧?

问候.

更新:

我已经禁用了“runAllManagedModulesForAllRequests”:

<modules runAllManagedModulesForAllRequests="false">
      <add name="MyModule" preCondition="managedHandler" type="MVCX.Modules.MyModule,MVCX" />
</modules>

并且一切似乎工作正常,但我发现这篇文章http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html建议删除和读取“UrlRoutingModule-4.0”模块与一个空的前提条件.

我的机器,该模块的添加在根web.config,它已经有一个空的preCondition:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config>type machine.config | find "UrlRouting"


C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config>type web.config | find "UrlRouting"
            <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config>

所以现在我有点困惑,这个参数的状态是什么?我应该使用还是不应该?为什么默认情况下为“真”?

问候.

解决方法

I my machine,the adding of that module is in the root web.config,and it has already an empty preCondition

完善.这意味着这个模块将始终运行,这是MVC需要的,因为它使用可扩展的URL.

So now I am a little bit confused,what is the status of this parameter? Should I use it or shouldn’t? why does it come as “true” by default?

因为IIS7 SP1和IIS7.5 SP1中的扩展名url支持是新的.
它可用于IIS7作为您必须请求和安装的修补程序.
你会在这里找到你的问题的完整答案:
http://support.microsoft.com/kb/980368

为什么这个参数默认为true?因为VS2010是在IIS7 SP1之前发货的.也许在VS2010SP1的新MVC项目中是虚假的?

猜你在找的asp.Net相关文章