2010-03-16 20 views
5

Ho appena installato .NET 4 su Windows SErver 2008 R2 x64 e ricevo 500 Errore interno server con un'applicazione ASP.NET MVC che in precedenza funzionava correttamente su 3.5. L'applicazione è stata aggiornata dal targeting 3.5 al target 4 e l'ho realizzata personalmente sul mio computer di sviluppo (modificata in VS - Properties in .NET Framework 4)..NET Framework 4 RTM su server Windows 2008 R2

Sul server ho installato il profilo del client .NET Framework 4 e Full sia tramite il programma di installazione della piattaforma Web sia automaticamente. ASP.NET MVC 2 è stato installato anche tramite Platform Installer. Ho creato un nuovo pool di applicazioni .NET 4 in IIS e ho inserito l'app web in esso.

Inoltre ho disattivato gli errori personalizzati in web.config, ma anche in questo caso non viene visualizzato alcun errore dettagliato - solo il semplice errore di server interno di IIS 7.5 500.

Qualche suggerimento?

+0

hai installato solo il profilo client sul server o il framework completo? –

+0

Vorrei iniziare suggerendo di attivare gli errori, per scoprirne un po 'di più, per cominciare ... –

+0

@Mauricio: Come si dice nella domanda, ho installato il profilo del cliente. @Rowlad: vuoi dire acceso o spento? Attualmente gli errori CUSTOM sono OFF, quindi dovrebbe visualizzare eccezioni dettagliate. – mare

risposta

6

Bene, questo è un problema molto strano e interessante .. Ma io sono desideroso di aiutare il più possibile. Attualmente ho un VPS con Server 2008 R2 e ho installato .NET 4 RTM e MVC 2 su di esso. Non credo di aver incontrato problemi di configurazione, ma ho dovuto aiutare a creare altre persone con esso ..

Inizialmente, potresti controllare .. nel tuo IIS manager, Isapi e Cgi restrizioni, vuoi .NET 4 è lì? Quali versioni? sono abilitati?

Se si accede ai pool di app in IIS, il pool di app viene eseguito su .NET 4, la NUOVA versione? Controlla questo, i tuoi pool di app potrebbero essere impostati su una build diversa del framework .NET 4, che è stato rimosso/disabilitato. Puoi provare a creare un NUOVO sito Web con un nuovo pool di app pulito solo per verificare se funziona.

Se non funziona ancora, si può provare a registrare nuovamente .NET in IIS con aspnet_regiis -i

Se nessuno di questi lavori, cercherò di tornare con alcune altre opzioni/idee

+0

Mi chiedo quale parte della soluzione ha risolto il problema? –

+3

andare al gestore IIS, controllare l'area "restrizioni Isapi e Cgi". Se .NET 4 è presente, assicurati che sia consentito l'esecuzione. –

+1

Se .NET non è presente, è necessario eseguire prima "aspnet_regiis -i". –

4

I di solito risolve questo tipo di problema reinstallando i file di supporto di ASP.NET su IIS.

  1. Aprire un prompt dei comandi con privilegi di amministratore (Prompt dei comandi, fare clic destro, Esegui come amministratore)
  2. Tipo a:

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

    aspnet_regiis -i

Done . Potrebbe essere necessario aprire IIS e riassegnare i pool di applicazioni al nuovo "ASP.NET 4.0 Integrated" (o Classic) appena creato.

+0

La mia configurazione è a posto e ho i nuovi pool di app di ASP.NET 4. Il problema è che sto eseguendo la mia app nella directory virtuale e sembra esserci qualcosa di sbagliato nell'ereditarietà di Web.Config. Ho appena testato la creazione di un nuovo sito Web di root in IIS e l'inserimento in .NET 4 Pool di app integrato e funziona correttamente. – mare

0

Ho anche piccoli problemi di compatibilità con la mia applicazione ASP.NET MVC. Può essere che tu abbia lo stesso problema.

Ho utilizzato NoSessionControllerFactory per disabilitare SessionState in base a How can I disable session state in ASP.NET MVC? e http://billrob.com/archive/2009/07/15/asp-net-mvc-without-sessionstate.aspx. Dopo l'aggiornamento a .NET 4.0 la mia applicazione non ha funzionato. Ho ricevuto anche 500 Errore interno del server. Dopo una piccola modifica di NoSessionControllerFactory da Global.asax.cs, il mondo era OK.Il codice fisso si presenta come segue:

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 classe sarà utilizzato all'interno di Global.asax.cs come:

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

scommetto che si tratta di un problema di configurazione con l'applicazione in questione . La configurazione di ASP.NET 4 è diversa da quella di 3.5.

E inoltre, assicurarsi che la propria applicazione Web faccia riferimento alle DLL da .NET 4 e non a .NET 3.5.

Problemi correlati