Azure应用服务-是什么修改了我的web.config? [英] Azure App Service - What modified my web.config?

查看:17
本文介绍了Azure应用服务-是什么修改了我的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆