2010-03-16 28 views
5

Acabo de instalar .NET 4 en Windows SErver 2008 R2 x64 y obtengo 500 Internal Server Error con una aplicación ASP.NET MVC que anteriormente funcionaba correctamente en 3.5. La aplicación se actualizó de la orientación 3.5 a la meta 4 y personalmente la construí hoy en mi máquina de desarrollo (modificada en VS - Propiedades a .NET Framework 4)..NET Framework 4 RTM en Windows Server 2008 R2

En el servidor instalé el perfil del cliente de .NET Framework 4 y Completo tanto automáticamente a través del instalador de la plataforma web. ASP.NET MVC 2 también se instaló mediante Platform Installer. Creé un nuevo grupo de aplicaciones .NET 4 en IIS y coloqué la aplicación web en él.

También tengo errores personalizados desactivados en web.config pero aun así no se muestra ningún error detallado, solo el error de servidor interno IIS 7.5 500.

¿Alguna sugerencia?

+0

¿solo instaló el perfil del cliente en el servidor o en el marco completo? –

+0

Comenzaría por sugerir errores de giro, para averiguar un poco más, para empezar ... –

+0

@Mauricio: Como dice en la pregunta, instalé Client Profile. @Rowlad: ¿Quiere decir encendido o apagado? Actualmente los errores CUSTOM están desactivados, por lo que debe mostrar excepciones detalladas. – mare

Respuesta

6

Bueno, eso es un problema muy extraño e interesante. Pero estoy ansioso por ayudar tanto como pueda. Actualmente tengo un VPS con Server 2008 R2, y he instalado .NET 4 RTM y MVC 2 en él. No creo que me haya encontrado con problemas de configuración, pero tuve que ayudar a configurar otras personas ...

Inicialmente, ¿podría verificar ... en su administrador de IIS, las restricciones de Isapi y Cgi? tener .NET 4 allí? ¿Qué versiones? ¿están habilitados?

Si va a sus grupos de aplicaciones en IIS, ¿sus grupos de aplicaciones son de .NET 4, la versión NUEVA? Vuelva a verificar esto, sus grupos de aplicaciones podrían establecerse en una compilación diferente de .NET 4 framework, que luego se eliminó/deshabilitó. Puede intentar crear un NUEVO sitio web con un nuevo grupo de aplicaciones limpias solo para probar si funciona.

Si nada funciona, sin embargo, se puede tratar de volver a registrar .NET en IIS con aspnet_regiis -i

Si nada de esto funciona, voy a tratar de volver con algunas opciones más/ideas

+0

Me pregunto qué parte de su solución solucionó el problema. –

+3

vaya al administrador de IIS y revise el "área de restricciones de Isapi y Cgi". Si .NET 4 está allí, asegúrese de que está permitido ejecutar. –

+1

Si .NET no está allí, primero debe ejecutar "aspnet_regiis -i". –

4

I generalmente resuelve ese tipo de problema reinstalando los archivos de soporte ASP.NET en el IIS.

  1. Abra un símbolo del sistema con privilegios de administrador (Símbolo del sistema, haga clic, en Ejecutar como administrador)
  2. Tipo en:

    cd %WINDIR%\Microsoft.NET\Framework64\v4.0.XX.XX

    aspnet_regiis -i

Done . Es posible que necesite abrir IIS y reasignar sus grupos de aplicaciones al "ASP.NET 4.0 Integrated" recientemente creado (o clásico).

+0

Mi configuración está bien y tengo los nuevos grupos de aplicaciones de ASP.NET 4. El problema es que estoy ejecutando mi aplicación en el directorio virtual y parece haber algún problema con la herencia de Web.Config. Acabo de probar la creación de un nuevo sitio web raíz en IIS y ponerlo en el grupo de aplicaciones integrado .NET 4 y funciona bien. – mare

0

También tengo pequeños problemas de compatibilidad con mi aplicación ASP.NET MVC. Puede ser que tengas el mismo problema.

Usé NoSessionControllerFactory para deshabilitar SessionState basado en How can I disable session state in ASP.NET MVC? y http://billrob.com/archive/2009/07/15/asp-net-mvc-without-sessionstate.aspx. Después de actualizar a .NET 4.0, mi aplicación no funcionó. Recibí también 500 Internal Server Error. Después de una pequeña modificación de NoSessionControllerFactory de Global.asax.cs el mundo estaba bien.El código fijo se parece a lo siguiente:

public class NoSessionControllerFactory: DefaultControllerFactory { 
    protected override IController GetControllerInstance (RequestContext requestContext, Type controllerType) { 
     if (controllerType != null) { 
      var controller = base.GetControllerInstance (requestContext, controllerType); 
      ((Controller)controller).TempDataProvider = 
       new DummyTempDataProvider(); 
      return controller; 
     } 
     else 
      return null; 
    } 
} 
public class DummyTempDataProvider: ITempDataProvider { 
    public IDictionary<string, object> LoadTempData (ControllerContext controllerContext) { 
     return new Dictionary<string, object>(); 
    } 
    public void SaveTempData (ControllerContext controllerContext, 
     IDictionary<string, object> values) { 
    } 
} 

La clase se puede utilizar dentro de Global.asax.cs como:

protected void Application_Start() { 
    RegisterRoutes (RouteTable.Routes); 

    // see https://stackoverflow.com/questions/884852/how-can-i-disable-session-state-in-asp-net-mvc 
    ControllerBuilder.Current.SetControllerFactory (new NoSessionControllerFactory()); 
} 
0

apuesto a que se trata de un problema de configuración con la aplicación en cuestión . La configuración de ASP.NET 4 difiere de la de 3.5.

Y también, asegúrese de que su aplicación web haga referencia a las DLL de .NET 4, y no de .NET 3.5.

Cuestiones relacionadas