最近我们从v1.7升级到MiniProfiler版本2.0.1,从那以后我们无法在我们的MVC3网站中使用它,因为当它试图获取其资源时,它会获得404.
示例资源调用是: /mini-profiler-resources/includes.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA =
在搜索时,大多数人都建议只需将runAllManagedModulesForAllRequests
设置为true
即可。对于咯咯笑,我继续把它设置为真,是的,它确实有效。 但这不是一个可接受的答案。
如何保留runAllManagedModulesForAllRequests=false
并仍然使用MiniProfiler v2?
答案 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>