读取web.config时出现IIS错误500.19错误。

3
我正在运行 Windows Server 2016 上的 IIS,并且尝试运行一个 ASP.Net 核心 3.1 应用程序,但我无法解决这个错误: 500.19 错误 (图片上的语言是匈牙利语,但没有任何有用的信息,只是一个例子) 这是我的 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=".\Minibizz.Routing.Web.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

我错过了什么吗? 附言:web.config是由Visual Studio 2019创建的。


你可以从https://docs.jexusmanager.com/tutorials/ancm-diagnostics.html获取一些想法。 - undefined
你找到解决办法了吗?我也遇到了同样的问题...已经安装了每个.NET Core Runtime和其他东西,但还是不起作用。 - undefined
我找不到解决办法,完全放弃了。我在新平台上重新做了应用程序,采用了一个干净的解决方案。 - undefined
2个回答

0
问题的原因: 错误消息详细说明了配置文件存在的问题,因此您应该参考“Config Error”和“Config Source”部分。这个问题是由于ApplicationHost.config文件或Web.config文件包含格式不正确或不支持的XML元素而引起的。
如果您正在使用URL重写规则,请安装IIS的URL重写扩展。启用ANCM日志记录,即设置stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout\"(我认为路径需要以反斜杠结尾),然后运行Web应用程序,查看是否有日志记录到stdout文件夹中。验证日志目录是否存在于Web配置所引用的路径中。如果不存在,请创建它。在您的配置中显示的路径将把“logs”目录放在部署站点的根文件夹中。验证应用程序池对日志目录具有写入权限。
确保您已安装.NET捆绑包。检查是否安装了以下IIS功能:

enter image description here

你可能还需要验证部署机器的环境变量中是否存在指向 dotnet 可执行文件的路径。要检查这一点,首先找到 dotnet.exe 安装的路径。通常位于 C:\Program Files\dotnet 或 C:\Program Files (x86)\dotnet 中。一旦知道路径,确保该路径存在于您的环境变量中。

web.config 内容似乎是正确的。如果使用干净的 web.config 副本,问题是否仍然存在?如果通过替换 web.config 为干净的配置内容可以解决问题,那么问题确实出在这个 web.config 上。在这种情况下,建议您删除部分 web.config 内容以缩小问题范围。如果在删除一个部分后页面显示正常,则问题出在该部分上。您需要仔细检查该部分有何问题,并更新正确的配置。

如果即使使用干净的 web.config 内容问题仍然存在,建议您访问站点中不同文件夹中的其他页面,看问题是否仍然存在。

您可以参考下面的链接了解如何在 IIS 中发布 asp.net core 站点:

https://learn.microsoft.com/en-us/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio


每个Web服务器功能都安装在相应的类别下。如果我删除web.config并尝试加载网站,它只会显示文件夹中的所有文件。而且,无论我对web.config进行何种修改,错误仍然保持不变。我将stdlogout设置为true,但没有创建任何文件。 是的,IIS对文件夹(甚至Inetpub)拥有完全权限。 - undefined
我还发现删除这行代码: <aspNetCore processPath=".\Minibizz.Routing.Web.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> 将会移除错误并只显示文件夹。 - undefined
是的,我有dotnet core 3.1主机包。 - undefined
正如我之前提到的,我已经安装了dotnet core 3.1运行时、aspnet 3.1运行时、3.1托管包以及桌面3.1运行时,所有这些都在下载部分。 - undefined
你是否尝试过使用应用程序池身份网络服务或本地系统? - undefined
显示剩余4条评论

0
似乎当出现"500.19 - 内部服务器错误",带有"错误代码0x8007000d"的错误时,来自web.config的规范在下方的框中只显示"Config source -1: 0:"(我猜这可能是原始帖子中匈牙利语错误消息的确切内容),通常是由于服务器不支持的配置部分引起的(而不是语法错误或不支持的参数)。
请参阅此讨论:https://social.msdn.microsoft.com/forums/en-US/06556db0-3597-4122-b365-12bcbc10740e/error-50019-error-code-0x8007000d-config-source-1-0?forum=iistroubleshooting 在我的情况下,web.config文件中引用了IIS URL Rewrite模块,但服务器上缺少该模块,导致出现此错误。从https://www.iis.net/downloads/microsoft/url-rewrite下载安装包并安装该模块后,错误消失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接