我正在开发的Asp.Net核心3.1 API,它的工作如预期。
当我运行它时,它会自动将原始的web. config转换为新的。
- 原始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="dotnet" arguments=".\EngageAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
- 新建Web.配置**
<?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%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="COMPLUS_ForceENC" value="1" />
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
所以我有两个问题。
1.为什么会自动生成?
1.如何停止此自动生成?
- 更新日期:**
- 进一步澄清问题:**
为什么它会导致这个问题?我正在从azure dev ops进行部署。我所做的是将web. config从我的项目复制到我正在创建的包中。并注意到此web. config已修改为新的web. config(它具有%LAUNCHER_PATH %%LAUNCHER_ARGS %)。因此,基本上我们不需要复制此web.config。我们需要复制在发布文件夹中生成的文件。
CsProj文件
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="Models\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Dapper" Version="2.0.35" />
<PackageReference Include="Microsoft.Azure.Storage.Blob" Version="11.1.7" />
<PackageReference Include="Microsoft.Azure.Storage.Common" Version="11.1.7" />
<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="3.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.3" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="5.1.1" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.1" />
</ItemGroup>
</Project>
2条答案
按热度按时间cygmwpex1#
看起来您在调试时使用的是IIS而不是IIS Express。
尝试将此添加到您的.csproj文件:
还要确保您的VS版本〉= VS 16.6.3
这个问题现在已经被websdk团队修复了:https://github.com/dotnet/websdk/issues/564#issuecomment-644199581
bis0qfac2#
Visual Studio会根据您的launchsettings.json自动更新web.config文件。当您从IDE运行/debug或使用dotnet run时,它会这样做。因此,对于net6.0和VS2022,答案是修改您的启动设置配置文件,以便它停止更改您的文件。
下面是一个例子
processPath是自动计算的,但我相信您也可以指定自己的路径,也可以在这里设置进程托管模型。
也许您希望每个开发人员都有自己的launchsettings.json来适应他们的环境。
发布项目时,它将再次更改web.config。如果您知道此. csproj属性具有所有正确的设置,则可以禁用此行为
可以在构建/发布时使用转换来控制web.config,但是当从VisualStudio(或dotnetrun)运行/调试时,它将始终基于launchsettings覆盖您的转换:)