wake-up-neo.com

ASP.Net Core 1.0 RC2: Was sind LAUNCHER_PATH und LAUNCHER_ARGS in web.config?

In der ASP.NET 5 RC2-Version gibt es brechende Änderungen :

  • Es wird in ASP.NET Core 1.0 umbenannt ( ASP.NET 5 ist tot ).
  • Auf Wiedersehen dnvm und dnu Befehlszeile, sie werden durch dotnet ersetzt.
  • Verschiedene notwendige Codeänderungen

Ich versuche, die von dotnet publish generierten Dateien bereitzustellen. Die Dateistruktur unterscheidet sich von RC1. Ich sehe den folgenden Fehler in der Ereignisanzeige:

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

Diese Umgebungsvariablen werden in web.config erwähnt, das dem Dokument official rc1-to-rc2 entnommen wird.

<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>

Was sind die korrekten Werte für %LAUNCHER_PATH% und %LAUNCHER_ARGS%? Diese Werte werden nicht in ihrem github publish document erwähnt. 

38
Jeson Martajaya

Von github IISSample (danke @Pawel und Luke) sind hier die Wertmöglichkeiten:

<!-- 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"/>

Nach einigen Stunden mit ihnen habe ich festgestellt, dass es two web.configs gibt, mit denen wir uns befassen müssen: src\ProjectName\wwwroot\web.config und src\ProjectName\web.config. Wenn Sie nicht über Letzteres verfügen, generiert VS2015 Publish standardmäßig einen für Sie mit %LAUNCHER_PATH% und %LAUNCHER_ARGS%.

Um das Projekt lokal unter VS2015 über IISExpress auszuführen und zu debuggen, muss für beide web.config der Standardwert darunter festgelegt werden. Wenn Sie LAUNCHER_PATH und LAUNCHER_ARGS durch etwas anderes ersetzen, hängt VS2015 auf unbestimmte Zeit.

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

Bei der Bereitstellung auf IIS (ich verwende 8.5 unter WinServer 2012 R2) muss der Wert in src\ProjectName\web.config jedoch durch den folgenden ersetzt werden. Falls konfiguriert, nimmt der Befehl dotnet publish-iis an, die Ersetzung für Sie vorzunehmen (siehe unten).

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

Wenn Sie von RC1 migrieren, ändern Sie das Verzeichnis change des http-gebundenen Verzeichnisses sowie den Project-Stammordner und nicht wwwroot. Beispiel: von C:\inetpub\ProjectName\wwwroot bis C:\inetpub\ProjectName.

Um configurepublish-iis für die automatische Ersetzung durchzuführen, fügen Sie dieses Projekt zu Ihrem Projekt.json hinzu: (Danke, @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%"
  }

Das IISIntegration-Werkzeugsegment konvertiert diese Launcher-Variablen in die entsprechenden Bereitstellungswerte. Andernfalls erhalten Sie folgende Fehlermeldung:

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

Ich verwende RC2 Toolkit Preview 1.

51
Jeson Martajaya

Der %LAUNCHER_PATH% und %LAUNCHER_ARGS% werden von VS verwendet. Das Tool „publish-iis“ (falls konfiguriert) überschreibt sie, wenn Sie Ihre Anwendung veröffentlichen.

8
Pawel

Dies ist ein Teil der web.config in VS:

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

Und dies ist nach der Veröffentlichung auf dem Server:

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

In diesem Beispiel wurde %LAUNCHER_PATH% durch dotnet und %LAUNCHER_ARGS% durch application name mit der Erweiterung .dll ersetzt

8
assassin1909

Vielen Dank für die Hilfe, ich habe eine Vorlage ( https://github.com/MarkPieszak/aspnetcore-angular2-universal ) und den Befehl verwendet

dotnet publish

machte einen Ordner unter 

bin/Debug/netcoreapp1.1/publish

Wenn Sie diesen Pfad als Stammverzeichnis der Site festlegen, hat er funktioniert! 

1
Adam Pine