2009-03-13 11 views
5

Descubrimos un problema al implementar la aplicación MVC en el servidor IIS7: cualquier ruta de navegación da error 404. He encontrado en la web que problema puede ser resuelto mediante el establecimiento del grupo de aplicaciones administrado a modo de canalización integrada, pero ahora tenemos una excepción:Problema de enrutamiento ASP MVC con IIS7

Request is not available in this context 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: Request is not available in this context 

Source Error: 


Line 19: 
Line 20:   public override void SetActiveUser(Guid userOid) { 
Line 21:    FormsAuthentication.SignOut(); 
Line 22:    HttpContext.Current.Items[Key] = userOid.ToString(); 
Line 23:    FormsAuthentication.RedirectFromLoginPage(userOid.ToString(), true); 

¿Alguien tiene alguna idea?

Respuesta

10

El problema probablemente se encuentre en el archivo web.config. Desde IIS7 ahora hay dos lugares para configurar controladores y módulos. Cuando se ejecuta en modo clásico, es como ejecutar en IIS 6 (aunque bajo IIS7).

Aquí está el fichero de configuración:

<system.web> 
[...] 
    <httpHandlers> 
      [...] 
     </httpHandlers> 
     <httpModules> 
      [...] 
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

     </httpModules> 
    </system.web> 

sólo debería haber IIS 6 configuraciones.

IIS 7 config debe colocarse debajo:

<system.webServer> 
[...] 
      <modules runAllManagedModulesForAllRequests="true" > 
       <remove name="UrlRoutingModule"/> 
       <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      </modules> 
      <handlers> 
       <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
      </handlers> 
     </system.webServer> 
1

Para envolver a lo indicado kvalcanti. El enrutamiento estándar fue diseñado para IIS 7. Se agregó un kludge para las versiones anteriores de IIS. Por lo tanto, si está pensando en versiones anteriores, tiene la versión mejorada del archivo de configuración. Cambiar la configuración resuelve el problema.

Además de lo que menciona kvalcanti, también existe la posibilidad de que tenga un poco de kludge configurado en su archivo.asax global. No estoy seguro de que siga siendo obligatorio en la versión más reciente de ASP.NET MVC, o no, ya que no he desarrollado nada más que Vista en los últimos meses.

Este post tiene una idea: http://www.developingfor.net/aspnet-mvc/deploying-aspnet-mvc-on-iis6.html

Scott Guthrie tenido un gran post sobre esto en su blog (http://weblogs.asp.net/scottgu/), pero yo no lo tienen marcada.

Cuestiones relacionadas