發佈asp.net core時如何修改ASPNETCORE_ENVIRONMENT環境變量

遇到的問題

當我把 asp.net core web 發佈到本地文件時,我發現程序讀的是 appsettings.Production.json ,也就說明當前的 ASPNETCORE_ENVIRONMENT = Production

請問如何動態修改 ASPNETCORE_ENVIRONMENT的值,這樣的話在 調試 和 發佈 階段都非常靈活瞭,但我嘗試在下面幾個地方修改都沒有成功。。。

  • windows settings
  • .pubxml file
  • launchSettings.json
  • project.json

解決方案

有下面幾個解決方案。

修改 .csproj 文件

可以在 .csproj 中增加 <EnvironmentName> 節點來設置環境變量,當 MSBuild 編譯時會根據當前的項目模式為 Deubg 還是 Release 執行相應代碼段,最後配置節會進入到 web.config 中。

<!-- Custom Property Group added to add the Environment name during publish
  The EnvironmentName property is used during the publish for the Environment variable in web.config
  -->
  <PropertyGroup Condition=" '$(Configuration)' == '' Or '$(Configuration)' == 'Debug'">
    <EnvironmentName>Development</EnvironmentName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' != '' AND '$(Configuration)' != 'Debug' ">
    <EnvironmentName>Production</EnvironmentName>
  </PropertyGroup>

在 FolderProfile.pubxml 中添加 EnvironmentName

可以在 publish profile中添加 <EnvironmentName> 節點配置你需要的環境變量,如下代碼所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <EnvironmentName>Development</EnvironmentName>
  </PropertyGroup>
</Project>

dotnet publish 時添加

在用 dotnet pulish 發佈項目時,可以在發佈參數中指定 環境變量。

dotnet publish -c Debug -r win-x64 /p:EnvironmentName=Development

cmd配置

Command Line : setx ASPNETCORE_ENVIRONMENT "Development"

PowerShell :  $Env:ASPNETCORE_ENVIRONMENT = "Development"

web.config 配置

可以在最後發佈好的 web.config 中增加 environmentVariables 節點,如下所示:

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

總結

相信這是很多新人在用 Asp.NET Core 開發項目最後發佈時都會遇到的坎,我在實際開發中用的最多的是在機器級配置 ASPNETCORE_ENVIRONMENT ,萬萬沒想到還有這麼多的靈活配置方案,不得不服,尤其是那個在 dotnet publish時指定,學習瞭 😁😁😁。

以上就是發佈asp.net core時如何修改ASPNETCORE_ENVIRONMENT環境變量的詳細內容,更多關於asp.net core修改ASPNETCORE_ENVIRONMENT環境變量的資料請關註WalkonNet其它相關文章!

推薦閱讀:

    None Found