Azure应用服务-是什么修改了我的web.config? [英] Azure App Service - What modified my web.config?
问题描述
我有一个从Kestrel运行的ASP.NET核心网站。它在生产中部署到Azure应用程序服务,在另一个应用程序服务中作为暂存部署。
我喜欢将过渡配置为类似于生产的&qot;,因此我在Azure门户的应用程序服务的配置刀片中设置了ASPNETCORE_ENVIRONMENTNAME = Production
。我可以从日志中看到,代码仍然将环境名称视为staging
。
原来<environmentVariable name="ASPNETCORE_ENVIRONMENTNAME" value="staging" />
是在Azure实例上的web.config
中设置的!!
现在,我的web.config
代码库中没有此集合,也没有任何转换,而且我也没有使用web.config
,实际上我不想与它或IIS有任何关系。
我的网站是通过Azure管道部署的。我使用environmentName
作为构建时间变量,但YAML只使用它一次,以连接一些文本来组成资源组名称。
然后,我使用与Azure管道运行时相同的命令行运行dotnet deploy
,但它写入最终发布输出文件夹的web.config
也不包含有问题的行。
就在几周前,我重新构建并重新部署了我所有的Azure资源。一切都很干净,而且都是脚本化的。
它到底是从哪里来的??!
我担心如果我把它取下来,有一天,它会神奇地重新出现。闻起来很像微软的某个人认为这是个好主意。
请注意,我已尝试使用应用服务编辑器和Kudu将其删除,但不允许删除!!
您的应用当前处于只读模式,因为您正在从程序包文件运行。若要进行任何更改,请更新您的zip文件和WebSite_Run_From_Package应用程序设置中的内容。
因此,如果我没有设置它,并且不允许我更改它,我该怎么办??
更新%1
我已从管道下载了项目,并且web.config已设置到位。
根据管道日志,命令运行如下。
dotnet publish --configuration Release --output D:a1s/dotnet-publish-output
但是当我自己在我的机器上运行它时,它不会干扰我的web.config。
推荐答案
哇。因此,在学校运行期间,我想到dotnet
命令写入web.config
的值是正确的。它怎么知道的?
它知道的唯一方法是从我在Azure管道中设置并在我的YAML文件中使用的环境变量azureResourceGroup: tz-$(environmentName)
。
当我在我的开发计算机上运行它而不是在Azure Build服务器上运行时,该环境变量没有设置。
因此,在运行dotnet publish
之前,我在我的dev机器上的环境中设置了environmentName
,嘿,presto!它通过添加环境变量搞砸了我的web.config
!太棒了。
> $env:environmentName = "undocumented-feature"
> dotnet publish --configuration Release --output C:DATAPublished
...
> cat C:DATAPublishedweb.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".MyWebsiteYeah.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="undocumented-feature" />
</environmentVariables>
</aspNetCore>
<security>
<requestFiltering>
<requestLimits maxUrl="32768" maxQueryString="262144"/>
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 3E05D228-D9AF-4782-8E33-1F0E69992750-->
不是那么可怕。
因此,我通过将管道中的变量名称更改为hostEnvironmentName
,解决了我的网站忽略门户中设置的变量的整个问题。
这篇关于Azure应用服务-是什么修改了我的web.config?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!