我正在将 ASP.NET Core Web API 发布到 Azure 应用服务。我已从 Visual Studio 2022 和 Azure DevOps 管道发布。我试图了解为什么 Visual Studio 发布过程会导致与 Azure DevOps 管道不同的 web.config 文件。
我的项目确实包含一个 web.config 文件,其中包含一些请求限制。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
当我从 Visual Studio 或 DevOps 发布时,发布过程会添加 aspNetCore 模块和<aspNetCore>
元素的处理程序信息。
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\DocRecService.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
当我从 Visual Studio 发布时,元素stdoutLogFile
上的位置是.<aspNetCore>
"\\?\%home%\LogFiles\stdout"
当我从 DevOps 管道构建和发布时,stdoutLogFile
位置是.\logs\stdout
.
我相信这dotnet publish
是转换 web.config 文件添加 aspNetCore 模块信息的管道中的任务。我将以下参数传递给它以生成一个独立的应用程序 --configuration Release --runtime win-x64 --output $(Build.ArtifactStagingDirectory)
。
web.config文档指出:
将应用部署到 Azure 应用服务时,stdoutLogFile 路径设置为 \?%home%\LogFiles\stdout。
但我找不到任何解释什么是/应该设置该值。什么是设置值?如何在我的 Azure DevOps 管道中或 Visual Studio 之外模仿这种行为?发布配置文件中是否有 DevOps 管道未使用的内容?我的主要目标只是更好地理解这个过程。