21

kiedy publikuję swoją główną aplikację webową asp.net do mojego lokalnego systemu plików, zawsze pobiera zmienną production-config i ASPNETCORE_ENVIRONMENT o wartości = "Production".jak ustawić ASPNETCORE_ENVIRONMENT do rozważenia do opublikowania podstawowej aplikacji asp.net?

jak i gdzie należy ustawić wartość zmiennej ASPNETCORE_ENVIRONMENT tak, aby była rozważana nie tylko do debugowania, ale również dla publikowania? Próbowałem już następujące opcje bez powodzenia:

  • w ustawieniach systemu Windows
  • w .pubxml pliku
  • w launchSettings.json
  • w project.json
+1

Lubisz czytać oficjalne dokumenty https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments lub ten poradnik http://andrewlock.net/how-to-set-the-hosting-environment-in-asp-net-core/? –

+0

http: // stackoverflow.com/questions/37668760/setting-environment-when-publishing-an-mvc-6-web-app – MindingData

Odpowiedz

14

Opcja 1:

Aby ustawić zmienną środowiskową ASPNETCORE_ENVIRONMENT w systemie Windows,

linia

Command - setx ASPNETCORE_ENVIRONMENT "Development"

PowerShell - $Env:ASPNETCORE_ENVIRONMENT = "Development"

Dla innych OS odnoszą ten - https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments

Opcja 2:

Jeśli chcesz ustawić ASPNETCORE_ENVIRONMENT użyciu web.config następnie dodać aspNetCore jak to-

<configuration> 
    <!-- 
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380 
    --> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> 
    </handlers> 
    <aspNetCore processPath=".\MyApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"> 
     <environmentVariables> 
     <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> 
     </environmentVariables> 
    </aspNetCore> 
    </system.webServer> 
</configuration> 
+7

Obie te opcje są okropne. 1) ustawia to dla całego systemu operacyjnego, chciałbym go na stronie w IIS. 2) AspNet Core nie obsługuje transformacji web.config. W jaki sposób sugerujesz, że plik web.config został zmodyfikowany w celu wdrożenia? – Kugel

+0

Zapoznaj się z oficjalną dokumentacją tutaj - https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module – Sanket

+1

Oficjalne dokumenty nie zapewniają lepszej opcji ;-) – Kugel

2

Powinieneś postępować zgodnie z instructions provided in the documentation, używając web.config.

<aspNetCore processPath="dotnet" 
     arguments=".\MyApp.dll" 
     stdoutLogEnabled="false" 
     stdoutLogFile="\\?\%home%\LogFiles\aspnetcore-stdout"> 
    <environmentVariables> 
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" /> 
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" /> 
    </environmentVariables> 
</aspNetCore> 

Należy pamiętać, że można również ustawić inne zmienne środowiskowe.

Core Module ASP.NET pozwala określić zmienne środowiskowe dla procesu określonego w atrybucie processPath określając je w jednej lub kilku environmentVariable elementów potomnych elementu kolekcji environmentVariables pod elementem aspNetCore. Zmienne środowiskowe ustawione w tej sekcji mają pierwszeństwo przed zmiennymi środowiskowymi systemu dla procesu.

2

Prosty sposób na ustawienie go w visual studio IDE. Zmienne

Projekt> Właściwości> Debug> Środowisko

enter image description here