在 IIS 7.0 中,对于使用 Url 路由 访问页面的 ASP.NET 应用程序,IIS可能会不能出 Url 是对 ASP.NET 的请求。

会显示404啊,403啊之类的错误代码(因为路径不存在,或者不允许查看目录)。

网上一般的解决方案比较“粗暴”,直接设置 runAllManagedModulesForAllRequests="true" 即可。

因为这样会让所有的请求都要经由 .NET 来处理,不管是什么路径文件,这样确实能解决当前的问题。

但是这样会让所有的请求都经 .NET 处理(刚才好像说过了╮(╯-╰)╭),一方面会让 .NET 比较累,所有静态文件请求也需要处理。

另一方面,也可能会让程序的内容变得更复杂,比如如果有代码会根据请求的 Url 来处理一些事情。

所以,既然是 Url 的问题,那么尽量就不要给别人添麻烦(>﹏<)

经网上查找,找到了一个看起来比较好的解决方案。如上图所示,Url 路由是由 UrlRoutingModule 这个模块来处理的。

在某些 IIS 版本中,并不会将所有请求交给 UrlRoutingModule 处理,所以,我们可以在 Web.config 中进行如下设置:

<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
</configuration>

首先移除掉原有的 UrlRoutingModule,然后再添加一下,不过这次添加将把 preCondition 设为空,这样貌似就可以了~

具体 preCondition 的可选值可以看这里:

https://www.iis.net/configreference/system.webserver/modules/add

感觉 runAllManagedModulesForAllRequests="true" 太不友好了,以后如果再遇到相关的问题,还是要找到对应的模块来进行针对性的处理比较好。

要刨根问底~

以上方法搜集自网络:

http://www.cnblogs.com/xishuai/p/Styles-Render-runAllManagedModulesForAllRequests-true.html

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html

不要随便使用 runAllManagedModulesForAllRequests="true" 来解决问题的更多相关文章

  1. 塞翁失马,焉知非福:由 Styles.Render 所引发 runAllManagedModulesForAllRequests="true" 的思考

    最近在使用 MVC 开发的时候,遇到一个对我来说"奇怪的问题",就是使用 BundleTable 进行 CSS.JS 文件绑定,然后使用 Styles.Render.Scripts ...

  2. <modules runAllManagedModulesForAllRequests="true" />(转1)

    最近在使用 MVC 开发的时候,遇到一个对我来说“奇怪的问题”,就是使用 BundleTable 进行 CSS.JS 文件绑定,然后使用 Styles.Render.Scripts.Render 进行 ...

  3. 【续集】塞翁失马,焉知非福:由 Styles.Render 所引发 runAllManagedModulesForAllRequests="true" 的思考

    在上一篇中,还有个遗留问题没有解决,就是 ASP.NET MVC MapRoute .htm 不起作用,如果不使用 runAllManagedModulesForAllRequests="t ...

  4. runAllManagedModulesForAllRequests 和 invalid url

    有这样的经验, 在本地的 IIS 上网站运行正常,但是发布到服务器上就一堆怪怪的问题 : MVC routing not work http://stackoverflow.com/questions ...

  5. mvc的IIS 配置问题 runAllManagedModulesForAllRequests 与 HtmlFileHandler

    runAllManagedModulesForAllRequests 一般设置为false,当为true时所有的资源将进入mvc处理,无疑会给服务器加大压力. 解决办法是时使用HtmlFileHand ...

  6. IIS部署ASP.NET网站后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态...

    今天,在IIS上部署网站后,出现了下面错误: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态.还请确保在应用程序配置的 <sy ...

  7. WCF服务发布到IIS中去(VS2013+win7系统)

    第一个WCF程序 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序.建立完成后如下图所示: 2.删除系统生成的两个文件IService1.cs与Service1.svc ...

  8. 搭建公司内部的NuGet Server

    随着公司业务慢慢的拓展,项目便会越来越来多,很多项目会依赖其他项目DLL,比如一些底层的技术框架DLL引用,还有各业务系统的也有可能会有引用的可能. 项目多,交叉引用多,如果要是有一个DLL更新,那就 ...

  9. mvc上传到云虚拟机的问题解决

    我用vs2015写了个小网站,.Net Framework4.5. mvc 5,发布到本机iis上正常,在美橙申请了一个云虚拟机,发布过程中遇到的一些问题记录如下: 1.服务器支持的版本比较低 上传后 ...

随机推荐

  1. 再次编译 arm toolchains

    为什么说再呢,因为已经好多次了.每次失败,都再从失败的地方开始.今天这篇呢,主要是记录今天的进展. 1. 编译要分三步走 之前学习的时候就有印象,要三步走.但是因为没有实践过,所以,忘差不多了.所谓三 ...

  2. C/C++中extern关键字详解(转)

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

  3. kettle 如何将excel文件导入oracle数据库?

      1.情景展示 昨日,有一批数据需要导入数据库,但是,plsql不知为何不能导了,于是,我选择使用kettle完成excel数据的导入. 2.准备工作 将对应的数据库所需的jar包拷贝至其lib目录 ...

  4. CSS知识点集锦

      CSS知识点集锦 CreateTime--2016年9月29日09:43:10Author:Marydon UpdateTime--2017年3月21日08:03:13 2.CSS样式优先级问题 ...

  5. ADAMS绳索仿真

    在实际生活中有大量的绳索类传动运动形式.绳索类部件看似简单,但是用计算机软件对其模拟时却存在较大障碍.以钢丝绳为例,通常都是通过细长的钢丝螺旋缠绕在一起形成,在工作时当施加拉力载荷于其上,除了材料自身 ...

  6. python之模块py_compile用法(将py文件转换为pyc文件)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...

  7. 如何导出标准模板库(STL)类的实例化和包含STL类对象数据成员的类

    本文翻译自 https://support.microsoft.com/zh-cn/help/168958/how-to-export-an-instantiation-of-a-standard-t ...

  8. Oracle常用方法

    oracle常用函数整理 时间转换 to_char to_date select to_char( sysdate, 'yyyy-mm') FROM dual; -- 2014-05 select t ...

  9. 系统空间占用排查 tomcat超大日志catalina.out 删除 与df 状态更新

    二.catalina.out占用多达60+G 并且其他诸如catalina.2016-03-29.log等具体日期的日志文件,个别的也有10G左右,直接删除这些大个头.df看稍有改善.针对catali ...

  10. Delphi消息推送

    移动端的消息推送大家都体验过,智能手机上一大堆广告等各种消息会不时从消息栏中弹出来骚扰你. PC程序中我们有时也会用到消息推送,比如通知之类.通常我们使用的方法可能更多地使用Socket之类来处理,有 ...