2016-05-26 31 views
33

Ci sono breaking changes in ASP.NET 5 RC2 stampa:ASP.Net Core 1.0 RC2: quali sono LAUNCHER_PATH e LAUNCHER_ARGS menzionati in web.config?

  • Si rinominato per ASP.NET core 1,0 (ASP.NET 5 is dead)
  • Good bye dnvm e dnu riga di comando, essi sono sostituiti dai dotnet
  • Varie modifiche necessarie al codice

Sto provando a distribuire i file generati da dotnet publish. La struttura dei file è diversa da RC1. Vedo il seguente errore nel Visualizzatore eventi: le variabili

Failed to start process with commandline '%LAUNCHER_PATH% %LAUNCHER_ARGS%', Error Code = '0x80070002'.

Questi ambiente sono menzionati al web.config, che è tratto dal documento official rc1-to-rc2.

<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" 
       modules="AspNetCoreModule" resourceType="Unspecified"/> 
    </handlers> 
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" 
     stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" 
     forwardWindowsAuthToken="false"/> 
    </system.webServer> 
</configuration> 

Quali sono i valori corretti per %LAUNCHER_PATH% e %LAUNCHER_ARGS%? Questi valori non sono menzionati nel loro github publish document.

risposta

46

Da github IISSample (grazie @ Pawel e Luca), qui ci sono le possibilità di valore:

<!-- This set of attributes are used for launching the sample using IISExpress via Visual Studio tooling --> 
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> 

<!-- This set of attributes are used for launching the sample for full CLR (net451) without Visual Studio tooling --> 
<aspNetCore processPath=".\IISSample.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> 

<!-- This set of attributes are used for launching the sample for Core CLR (netcoreapp1.0) without Visual Studio tooling --> 
<aspNetCore processPath="dotnet" arguments=".\IISSample.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> 

Dopo diverse ore che si occupano di loro, ho trovato ci sono due web.configs che dobbiamo affrontare: src\ProjectName\wwwroot\web.config e src\ProjectName\web.config. Se non si dispone di quest'ultimo, VS2015 pubblica ne genererà uno per voi con %LAUNCHER_PATH% e %LAUNCHER_ARGS% per impostazione predefinita.

Per avere il progetto eseguito e debuggabile localmente in VS2015 tramite IISExpress, entrambi web.config devono avere il valore predefinito sotto. Sostituendo LAUNCHER_PATH e LAUNCHER_ARGS con qualcos'altro, VS2015 si bloccherà indefinitamente.

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> 

Tuttavia, dopo la distribuzione di IIS (sto usando 8.5 su WinServer 2012 R2), il valore sul src\ProjectName\web.config deve essere sostituito con il seguente. Se configurato, il comando dotnet publish-iis suppone di fare la sostituzione per te (vedi sotto).

<aspNetCore processPath="dotnet" arguments=".\ProjectName.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> 

Se si sta migrando da RC1, change la directory http legata pure alla cartella principale del progetto, non wwwroot. Esempio: da C:\inetpub\ProjectName\wwwroot a C:\inetpub\ProjectName.

Per configurepublish-iis da fare sostituzione automatica, aggiungere questo frammento alla project.json: (Grazie @Pawel)

"tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
     "version": "1.0.0-preview1-final" 
    } 
    }, 
    "scripts": { 
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" 
    } 

Il segmento strumento IISIntegration converte queste variabili Launcher ai valori di distribuzione appropriato. Senza di esso, si otterrà il seguente errore:

No executable found matching command "dotnet-publish-iis" 

Sto usando Anteprima RC2 Toolkit 1.

+2

Non penso che bisogno di 2 web.config per RC2. Credo che quello di wwwroot sia inutile ora. – maxisam

+0

@maxisam non proprio. il 'progetto \ wwwroot \ web.config' è usato per generare' project \ web.config'. Se configuri il tuo 'project.json' come sopra, userà il tuo' progetto \ wwwroot \ web.config' come modello. –

+0

Ah ... puoi provarlo tu stesso. Funziona correttamente senza avere web.config in wwwroot. E sì, io uso gli stessi script in project.json. In effetti, è come il nuovo modello fa quando si aggiorna a '1.0.0-preview1-002702' – maxisam

8

Gli %LAUNCHER_PATH% e %LAUNCHER_ARGS% sono utilizzati da VS. lo strumento publish-iis (se configurato) le sovrascriverà quando pubblichi la tua applicazione.

+0

Dove trovo lo strumento di pubblicazione-iis? Posso chiamarlo tramite linea di comando da qualche parte? – Dessus

+0

Lo strumento ti viene proposto specificando un riferimento nella sezione 'tools' nel tuo poject.json e' dotnet restore'ing del tuo progetto. Wile è possibile eseguire lo strumento da riga di comando l'utilizzo tipico è configurarlo come uno script di post-pubblicazione. Vedi il mio post per maggiori dettagli: https://blog.3d-logic.com/2016/06/08/running-asp-net-core-applications-with-iis-and-antares/ – Pawel

6

Questo fa parte del web.config in VS:

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" 
    stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" 
    forwardWindowsAuthToken="false"/> 

E questo è sul server dopo la pubblicazione:

<aspNetCore processPath="dotnet" arguments=".\AppName.dll" 
    stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" 
    forwardWindowsAuthToken="false" /> 

In questo esempio %LAUNCHER_PATH% è stato sostituito da dotnet, e %LAUNCHER_ARGS% da application name con estensione .dll

Problemi correlati