2012-04-24 15 views
47

Recientemente hemos actualizado a MiniProfiler versión 2.0.1 desde v1.7, y desde entonces no hemos podido utilizarlo en nuestro sitio web MVC3 porque cuando intenta obtener sus recursos, en su lugar consigue un 404.Ejecutando MiniProfiler con runAllManagedModulesForAllRequests establecido en falso

un ejemplo es la llamada de recursos: /mini-profiler-resources/includes.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA=

En la búsqueda alrededor, la mayoría de las personas están sugiriendo simplemente configurando runAllManagedModulesForAllRequests debe establecerse en true. Para risitas, seguí adelante y lo configuré como cierto, y sí funcionó. Pero esa no es una respuesta aceptable.

¿Cómo puedo conservar runAllManagedModulesForAllRequests=false y seguir usando MiniProfiler v2?

+1

bueno ... tenemos que averiguar qué se rompió primero, ¿tiene trunk el mismo problema? Sé que hubo solicitudes para servir cosas sin extensión en el pasado para evitar este –

+0

Parece que esta publicación habla del mismo problema: http://stackoverflow.com/q/10212725/498969 El código que saqué fue de su paquete Nuget, por lo que no puedo confirmar el problema desde el maletero en este momento. La versión 2 ya no requiere que registre esos tres manejadores (miniProfilerJS, miniProfilerCSS, miniProfilerTmpl) ¿verdad? ¿Lo estás logrando registrando rutas desde MiniProfilerHandler? –

+0

Creo que el diseño más limpio al que podemos acceder es un solo punto final para servir todo, por ejemplo: /mini-profiler-handler?jquery.js&kfslsfjklskd, etc ... puede publicarlo en http://community.miniprofiler.com –

Respuesta

74

Tuve el mismo problema: los recursos que se solicitan usan extensiones de archivos "estáticos" (como .js) y, por lo tanto, IIS quiere manejarlos utilizando su controlador de archivos estáticos.

Por suerte todos los recursos MiniProfiler se solicitan con la ruta mini-profiler-resources, lo que puede añadir lo siguiente a su 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> 

La entrada anterior indica a IIS que cualquier solicitud de la trayectoria mini-profiler-resources a ser enrutado a través ASP.NET.

+0

Gracias @David. ¡¡Funciona perfectamente!! –

+1

¿Qué tendríamos que hacer para soportar que IIS 7 se ejecute en modo clásico? – goalie7960

+3

Hmm .. si está ejecutando en modo clásico, entonces probablemente podría agregar una entrada similar en . Creo que el formato es la misma excepción, tal vez deje de lado los atributos resourceType y preCondition. –

0

Como dice David Duffet en los comentarios en la respuesta aceptada, es posible que también deba agregar la siguiente entrada a su configuración web. Esto funcionó para mí:

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

tuve un problema similar y lo que hice para solucionarlo fue cambiar el grupo de aplicaciones a 'integrado' y luego añadió esta nueva línea de abajo a mi web.config y luego trabajó .

Aquí se muestra cómo se ve ahora la web.config completa para miniperfil.

<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> 
Cuestiones relacionadas