Il existe des modifications importantes dans la version ASP.NET 5 RC2:
dnvm
et dnu
en ligne de commande, ils sont remplacés par dotnet
J'essaie de déployer les fichiers générés par dotnet publish
. La structure des fichiers est différente de celle de RC1. Je vois l'erreur suivante dans l'observateur d'événements:
Failed to start process with commandline '%LAUNCHER_PATH% %LAUNCHER_ARGS%', Error Code = '0x80070002'.
Ces variables d'environnement sont mentionnées dans web.config
, qui provient du document 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>
Quelles sont les valeurs correctes pour %LAUNCHER_PATH%
et %LAUNCHER_ARGS%
? Ces valeurs ne sont pas mentionnées dans leur document de publication github .
De github IISSample (merci @Pawel et Luke), voici les possibilités de valeur:
<!-- 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"/>
Après plusieurs heures de travail avec eux, j’ai découvert qu’il fallait traiter deux web.configs: src\ProjectName\wwwroot\web.config
et src\ProjectName\web.config
. Si vous ne possédez pas ce dernier, VS2015 publier vous en générera un avec %LAUNCHER_PATH%
et %LAUNCHER_ARGS%
par défaut.
Pour que le projet soit exécuté et débogué localement sous VS2015 via IISExpress, les deux paramètres web.config doivent avoir la valeur par défaut ci-dessous. Si vous remplacez LAUNCHER_PATH et LAUNCHER_ARGS par quelque chose d'autre, VS2015 se bloque indéfiniment.
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
Cependant, lors du déploiement sur IIS (j'utilise 8.5 sur WinServer 2012 R2), la valeur sur src\ProjectName\web.config
doit être remplacée par la suivante. Si elle est configurée, la commande dotnet publish-iis
suppose de faire le remplacement pour vous (voir ci-dessous).
<aspNetCore processPath="dotnet" arguments=".\ProjectName.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
Si vous migrez de RC1, change le répertoire lié http également au dossier racine du projet, pas à wwwroot. Exemple: de C:\inetpub\ProjectName\wwwroot
à C:\inetpub\ProjectName
.
Pour configurerpublish-iis
effectuer un remplacement automatique, ajoutez cet extrait à votre projet.json: (Merci @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%"
}
Le segment de l'outil IISIntegration convertit ces variables du programme de lancement en valeurs de déploiement appropriées. Sans cela, vous obtiendrez l'erreur suivante:
No executable found matching command "dotnet-publish-iis"
J'utilise RC2 Toolkit Preview 1.
Les %LAUNCHER_PATH%
et %LAUNCHER_ARGS%
sont utilisés par VS. L'outil publish-iis (s'il est configuré) les remplacera lorsque vous publiez votre application.
Cela fait partie de web.config dans VS:
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false"/>
Et ceci est sur le serveur après la publication:
<aspNetCore processPath="dotnet" arguments=".\AppName.dll"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
Dans cet exemple, %LAUNCHER_PATH%
a été remplacé par dotnet
et %LAUNCHER_ARGS%
par application name
avec l'extension .dll
Merci pour l'aide les gars, j'utilisais un modèle ( https://github.com/MarkPieszak/aspnetcore-angular2-universal ) et la commande
dotnet publish
fait un dossier sous
bin/Debug/netcoreapp1.1/publish
La définition de ce chemin en tant que répertoire racine du site a fonctionné!