无法启动网站,因为在 <handlers> web.config 中



我已经接管了我们目前部署在IIS服务器上的软件产品的开发。最初它以 ASP.net 核心 2.0 运行,但由于我想使用 EF,因此我将软件配置为使用 2.1。

问题是,当我部署新版本的软件时,我无法成功运行它。我试图追踪错误,我认识到成功运行的版本和新发布的版本的 web.config 彼此不同。

这是运行良好的版本:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<aspNetCore processPath="dotnet" arguments=".myProject.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" />
</system.webServer>
</configuration>
<!--ProjectGuid: 2b991c10-ec9f-493d-97b9-ee1f96458510-->

这不起作用:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".myProject.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" />
</system.webServer>
</configuration>
<!--ProjectGuid: 2b991c10-ec9f-493d-97b9-ee1f96458510-->

显然,只是处理程序才有所作为。当我手动删除它时,软件运行良好。如何确保在将来通过 VB 2019 发布的过程中,此处理程序不会添加到 web.config 中?我可以进行任何设置来防止此错误吗?

要在发布过程中忽略web.config,您可以尝试*.csproj<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>,例如

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
</Project>

有关更多信息,您可以参考 web.config 文件

不幸的是,我无法重建该初始错误消息,但同时解决了问题。

问题是在发布期间添加到 web.config 的<处理程序>标记。我们使用嵌套网站结构,有一个主网站和 4 个子网站。在此配置中,必须根据Microsoft中的文档删除 web.config 中的处理程序。我的前同事不久前编写了一个小型 xdt 转换脚本,该脚本应该在发布软件时删除标签。它总是工作正常,但是当我将 SDK 更新到 2.1 时它停止工作。因此,处理程序标签被添加到web.config中,这就是为什么我首先无法访问该网站的原因。

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document->Transform">
<system.webServer>
<handlers xdt:Transform="Remove" />
</system.webServer>
</configuration>

我发现生成的web.config在标签之前有一个额外的<语言>标签。将语言标记添加到删除脚本使脚本再次工作。现在这个问题解决了,我至少可以连接到网站。

但是连接后我收到了HTTP错误502.5。这是由于服务器上安装了旧的 2.0.7 版本的运行时。更新到2.2后,网站终于正确呈现。

相关内容

最新更新