2015-10-15 15 views
6

Ho appena aggiornato MVC6 Beta8. Dopo alcune ore di correzione del codice per la compilazione, mi imbatto in problemi che l'app non funziona con IIS Express. Ricevo questo messaggio di errore:Esecuzione dell'applicazione MVC6 Beta8 su IIS Express

[TypeLoadException: Impossibile caricare il tipo 'Microsoft.Dnx.Host.Clr.EntryPoint' dal assembly 'Microsoft.Dnx.Host.Clr, Version = 1.0.0.0, Culture = neutro PublicKeyToken = adb9793829ddae60' ] System.Web.HttpRuntime.HostingInit (HostingEnvironmentFlags hostingFlags, PolicyLevel PolicyLevel, eccezione appDomainCreationException) 303

[HttpException (0x80004005):. Impossibile caricare il tipo 'Microsoft.Dnx.Host. Clr.EntryPoint 'dall'assembly' Microsoft.Dnx.Host.Clr, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = adb9793829ddae60 '.] System.Web.HttpRuntime.FirstRequestInit (contesto HttpContext) +9922864.515.053.691,36321 milioni System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext contesto) +90 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext contesto) +261

So che ci sono stati cambiamenti all'architettura di hosting. Ma questo significa che non possiamo più usare IIS Express o è solo questione di aggiornamento o modifica della configurazione?

+0

Hai persino google? [uno] (https://github.com/aspnet/dnx/issues/2790) [due] (https://github.com/aspnet/dnx/issues/2834) e [fonte originale] (https: // github.com/aspnet/Announcements/issues/70) Ho bisogno di nuove webtoolextensions/dnvm (i link sono su questo problema). Per inciso, dovresti, se non lo sei già, seguire github.com/aspnet/ annunci. Inoltre, dovresti essere in esecuzione con 'dnx kestrel' ora. –

+1

@BradChristie, Sì, ho trovato entrambi i post e anche l'annuncio. Affermano il problema, ma non la soluzione (a est non la vedo lì, forse manca qualcosa di ovvio). Come eseguire dnx kestel per Visual Studio? –

risposta

6

Ci sono alcune modifiche al modello di hosting IIS/IIS Express di cui è necessario tenere conto quando si esegue l'aggiornamento a beta8.

Nel file project.json, rimuoverli dalle dipendenze:

  • "Microsoft.AspNet.Server.IIS"
  • "Microsoft.AspNet.Server.WebListener "

Aggiungere il seguente alle vostre dipendenze:

  • "Microsoft.AspNet.Server.Kestrel"
  • " Microsoft.AspNet.IISPlatformHandler

Infine, in avvio file .cs, aggiungere quanto segue al metodo Configure:

  • app.UseIISPlatformHandler();

(sto assumendo app è il nome del vostro IApplicationBuilder, si può regolare di conseguenza).

Questo aggiungerà il nuovo IISPlatformHandler alla pipeline e indirizzerà il traffico al server Kestrel, ignorando quindi IIS e il vecchio host Helios dnx.

Si può leggere su questo cambiamento negli annunci sui Github

+0

Ciò ha avuto lo stesso problema. Cosa puoi dire della tua sezione "comandi" su project.json? Thx – Minduca

+0

Ho dovuto passare il mio comando web da "Microsoft .AspNet.Hosting --config hosting.ini "a" Microsoft.AspNet.Server.Kestrel "allora questa risposta ha funzionato –

+2

Se ancora non funziona, controlla il file' web.config' in wwwroot.la sezione webServer' dovrebbe contenere solo il gestore 'httpPlatformHandler' e la sua configurazione. Altri gestori impediranno l'avvio di IISExpress. Puoi creare un nuovo progetto vuoto per vedere il file 'web.config' di vanilla. –

5

Ecco come ho risolto il problema:

  1. di scaricare e installare gli ultimi WebToolsExtentions da http://www.microsoft.com/en-us/download/details.aspx?id=49442
  2. Creare un nuovo progetto di applicazione Web ASP.NET5
  3. Copiare i file da un vecchio progetto per un nuovo progetto

Non riuscivo a capire come modificare il progetto esistente.

+2

Project.json deve essere aggiornato per utilizzare la nuova versione beta. –

+0

Giusto. Basta copiare i file non funzionerà - ci sono molti cambiamenti in Beta 8, e non tutti sono correttamente documentati. Ad esempio, il nuovo ConfigurationBuilder (appEnv.ApplicationBasePath) da un modello precedente non funzionerebbe più e dovrai invece utilizzare SetBasePath(). Oppure le proprietà di navigazione funzionano in modo diverso quando c'è una proprietà di chiave esterna (è necessario aggiungere la dichiarazione [ForeignKey]. –

+1

ha faticato per giorni dopo l'aggiornamento della mia versione tramite console.Questa risposta l'ha sistemata immediatamente.grazie per la condivisione – Dbl

1

Ho avuto lo stesso problema dopo l'aggiornamento a Beta 8 e risolto rimuovendo le seguenti dipendenze da project.json:

"Microsoft.AspNet.Server.IIS": "1.0.0-beta7"
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7"

e aggiungendo la seguente dipendenza:

"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8"

Ho anche aggiornato tutti i riferimenti del progetto daDaa beta8.

Spero che questo aiuti.

0

Qui è il mio modo. Qualcuno può trovare qualcosa di utile. Ho aggiunto queste righe al mio project.json:

"Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8", 
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta8", 
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8", 

E ho cambiato comandi da:

"commands": { 
    "web": "Microsoft.AspNet.Hosting --config hosting.ini", 
}, 

a questo:

"commands": { 
    "web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000", 
    "kestrel": "Microsoft.AspNet.Server.Kestrel", 
}, 

poi dnu restore

Ora è possibile eseguire la tua applicazione asp.net con il comando dnx web o dnx kestrel. Le differenze sono descritte qui: https://github.com/aspnet/Home/wiki/Servers