运行MiniProfiler,并将runAllManagedModulesForAllRequests设置为false

时间:2012-04-24 19:22:06

标签: asp.net-mvc-3 web-config mvc-mini-profiler

最近我们从v1.7升级到MiniProfiler版本2.0.1,从那以后我们无法在我们的MVC3网站中使用它,因为当它试图获取其资源时,它会获得404.

  

示例资源调用是:   /mini-profiler-resources/includes.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA =

在搜索时,大多数人都建议只需将runAllManagedModulesForAllRequests设置为true即可。对于咯咯笑,我继续把它设置为真,是的,它确实有效。 但这不是一个可接受的答案。

如何保留runAllManagedModulesForAllRequests=false并仍然使用MiniProfiler v2?

3 个答案:

答案 0 :(得分:74)

我遇到了同样的问题 - 请求的资源使用“静​​态”文件扩展名(例如.js),因此IIS希望使用其静态文件处理程序来处理它们。

幸运的是,所有MiniProfiler资源都以路径mini-profiler-resources请求,因此您可以将以下内容添加到web.config

<system.webServer>
  ...
  <handlers>
    <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
  </handlers>
</system.webServer>

上面的条目指示IIS通过ASP.NET路由mini-profiler-resources路径的任何请求。

答案 1 :(得分:0)

正如David Duffet在接受的答案中的评论中所说,您可能还需要在Web配置中添加以下条目。这对我有用:

<system.web>
    <httpHandlers>
      <add verb="*" type="System.Web.Routing.UrlRoutingModule" path="mini-profiler-resources/*"/>
    </httpHandlers>
</system.web>

答案 2 :(得分:0)

我遇到了类似的问题,我采取的措施是将应用程序池更改为“集成”。然后我在下面将这一新行添加到我的web.config中,然后就可以了。

以下是mini-profiler的完整web.config现在的样子。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="false" />
    <validation validateIntegratedModeConfiguration="false"/> <!-- Here is the new line -->
    <handlers>
      <add name="MiniProfiler" verb="*" type="System.Web.Routing.UrlRoutingModule" path="mini-profiler-resources/*"/>
    </handlers>
  </system.webServer>