Dotnet Core 在發布的時候預設會輸出 web.config,發佈到 IIS 伺服器如果有要調整 web.config 的內容,可以用以下幾種做法來達成。
關閉輸出
在 server 上修改,不要讓重新佈署的時候被覆蓋,可以使用 IsTransformWebConfigDisabled
來關閉輸出。
1
| dotnet publish -c Release -p:IsTransformWebConfigDisabled=true
|
1 2 3 4
| <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled> </PropertyGroup>
|
建立 web.config
如果是希望每個發布的 web.config 都有同樣的內容,那也可以建立 web.config 在專案中。
標準沒有什麼設定的情況下,輸出的檔案內容如下
1 2 3 4 5 6 7 8 9 10 11
| <?xml version="1.0" encoding="utf-8"?> <configuration> <location> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\Server.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </location> </configuration>
|
增加一個環境變數在檔案內,可以只設定額外增加的內容,剩下的系統會自動幫你填上
1 2 3 4 5 6 7 8 9 10 11
| <configuration> <location> <system.webServer> <aspNetCore> <environmentVariables> <environmentVariable name="Configuration_Specific" value="Configuration_Specific_Value" /> </environmentVariables> </aspNetCore> </system.webServer> </location> </configuration>
|
上面的內容在執行 publish 指令後會是長這樣
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?xml version="1.0" encoding="utf-8"?> <configuration> <location> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\Cimes.Server.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess"> <environmentVariables> <environmentVariable name="Configuration_Specific" value="Configuration_Specific_Value" /> </environmentVariables> </aspNetCore> </system.webServer> </location> </configuration>
|
Reference