加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:39:25 所属栏目:asp.Net 来源:网络整理
导读:创建自定义IHttpModules,我已经意识到静态文件(例如.css和.js文件)的请求正在被管理的模块.也许图片有同样的问题.不应该IIS绕过文件系统中存在的文件的ASP.NET? 例如: public class MyModule:IHttpModule{ public void Dispose(){ } public void Init(Http
创建自定义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:WindowsMicrosoft.NETFramework64v4.0.30319Config>type machine.config | find "UrlRouting"


C:WindowsMicrosoft.NETFramework64v4.0.30319Config>type web.config | find "UrlRouting"
            <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />

C:WindowsMicrosoft.NETFramework64v4.0.30319Config>

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

问候.

解决方法

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项目中是虚假的?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读