当runAllManagedModulesForAllRequests设置为false时,如何运行MiniProfiler

47
最近我们从v1.7升级到MiniProfiler版本2.0.1,自升级以来,在MVC3网站中无法使用,因为当它尝试获取资源时,却得到了404错误。一些人建议仅需将runAllManagedModulesForAllRequests设置为true即可解决问题。我已经这样设置过,确实可行,但这不是一个可接受的答案。请问如何在保持runAllManagedModulesForAllRequests=false的情况下仍然使用MiniProfiler V2?

1
好的...我们需要先弄清楚是什么出了问题,主干代码是否有相同的问题?我知道过去有请求以无扩展名的方式提供服务来解决这个问题。 - Sam Saffron
这篇文章似乎在讨论同样的问题:https://dev59.com/rmkv5IYBdhLWcg3w_Vqn。我下载的代码来自您的NuGet包,所以目前无法从主干确认该问题。版本2不再需要我注册那三个处理程序(miniProfilerJS、miniProfilerCSS、miniProfilerTmpl),对吗?您是通过从MiniProfilerHandler注册路由来解决这个问题的吗? - Adam Spicer
我在考虑我们可以采用的最简洁的设计是一个单一的端点来提供所有的东西,例如:/mini-profiler-handler?jquery.js&kfslsfjklskd等等...你能在http://community.miniprofiler.com上发布吗? - Sam Saffron
@SamSaffron,看起来下面David的答案可行!我已经将信息添加到社区跟踪器中的您的知识库中。 - Adam Spicer
1
感谢 @Adam ... 已发布。 - Sam Saffron
3个回答

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,将任何对 mini-profiler-resources 路径的请求通过 ASP.NET 进行路由。


1
要支持在经典模式下运行的IIS 7,我们需要做什么? - goalie7960
3
如果您运行在经典模式下,那么您可以在<system.web><httpHandlers>中添加类似的条目。我认为格式是相同的,只是可能要省略resourceType和preCondition属性。 - David Duffett
5
这很好用,我认为这个重大改变应该在http://miniprofiler.com/网站上被记录和突出显示。 - Jalal El-Shaer
4
由于.NET 4.5中的重大变化,目前需要我们添加@David提到的处理程序注册作为解决方法。将“runAllManagedModulesForAllRequests=true”设置为true无法解决这个问题。 - Loren Paulsen
4
请帮助我,我也使用Classic模式和MVC 4,我尝试添加到httpHandlers,但它没有实现type="System.Web.Routing.UrlRoutingModule"。你能否展示一下你使用的httpHalder? - Sergey

0

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

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

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接