In der ASP.NET 5 RC2-Version gibt es brechende Änderungen :
dnvm
und dnu
Befehlszeile, sie werden durch dotnet
ersetzt.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.
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.
Der %LAUNCHER_PATH%
und %LAUNCHER_ARGS%
werden von VS verwendet. Das Tool „publish-iis“ (falls konfiguriert) überschreibt sie, wenn Sie Ihre Anwendung veröffentlichen.
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
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!