web-dev-qa-db-fra.com

ASP.Net Core 1.0 RC2: Que mentionnent LAUNCHER_PATH et LAUNCHER_ARGS dans web.config?

Il existe des modifications importantes dans la version ASP.NET 5 RC2:

  • Il est renommé ASP.NET Core 1.0 ( ASP.NET 5 est mort )
  • Au revoir dnvm et dnu en ligne de commande, ils sont remplacés par dotnet
  • Divers changements de code nécessaires

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

38
Jeson Martajaya

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.

51
Jeson Martajaya

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.

8
Pawel

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

8
assassin1909

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

1
Adam Pine