Web.config 转换删除安全和 HttpProtocol 节点

Web.config transform removes Security and HttpProtocol node

当我将 Dotnet Core (2.x) 应用程序发布到我的发布配置时,Web.config 未正确转换。

当然它有 Handlers 和 aspNet Core 元素,但是所有 te httpProtocol 和 Security 节点都完全消失了!我在这里遗漏了什么吗?

基础/开发Web.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="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" requestTimeout="00:10:00" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
      <security>
        <requestFiltering>
          <requestLimits maxAllowedContentLength="524288000" />
        </requestFiltering>
      </security>
      <httpProtocol>
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
  </location>
</configuration>

在 dotnet publish --configuration Server -o C:\MyWebs\publish

之后

<?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=".\project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>

干杯。

最终使用 Web.release.config 修复了它并使用 xdt:Transform 插入特定的 httpProtocol 和安全节点。

<httpProtocol xdt:Transform="Insert">
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>