提问人:Mig 提问时间:3/1/2018 最后编辑:Lex LiMig 更新时间:10/5/2023 访问量:5031
移动到不同的 IIS 服务器电脑后,在 IIS 中发布的核心 Web API asp.net 出现错误 500.19 (0x8007000d)
asp.net core web api published in IIS after moved to different IIS server pc gives error 500.19 (0x8007000d)
问:
我使用 Visual Studio 2015 在 asp.net 核心版本 1.0.1 中开发了一个 Web API,当我在开发它的同一台电脑的 IIS 10 中发布 Web API 时,一切正常。当我将 Web API 的发布文件夹复制并粘贴到另一台 PC 时出现问题,浏览器显示错误 500.19 Internal Server Error,错误代码 0x8007000d,“无法访问请求的页面,因为该页面的相关配置数据无效”,这导致 web.config 中出现一些问题。 我不认为 IIS 的版本是问题所在,因为从 IIS 10 移动到 IIS 8 或从 IIS8 移动到 IIS 10 会产生相同的错误,并且在两台装有 IIS 10 的 PC 之间也会发生同样的情况。 我已经查看了几个相关问题,例如,元素“system.webServer”具有无效的子元素“aspNetCore”,以及与web.config文件相关的其他问题,其中似乎发现了错误。开发环境中的 web.config 文件为:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
发布 Web API 后,web.config 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\buildingSecureWebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
无论发布哪台计算机,此 web.config 文件都具有相同的内容。
关于我的问题的解决方案可能是什么,我需要在任何版本的 Windows 中安装 Web api,到目前为止,它只能在开发的 PC 上正常工作。
答:
要获取更详细的错误消息,请执行以下操作:
验证 Web 配置引用的路径中是否存在日志目录。如果没有,请创建它。配置中显示的路径会将“logs”目录放在已部署站点的根文件夹中。
验证应用程序池是否具有对日志目录的写入访问权限,以及
验证 'stdoutLogEnabled=“true”。
如果您已验证了所有这 3 项,则您应该会获得日志条目,其中包含更详细的错误描述
什么可能导致“500.19 内部服务器错误,错误代码0x8007000d”错误?
- .NET Core 托管捆绑包未安装在部署站点的 Web 服务器上。.NET Core hosting bundle is not installed on the web server where the site is deployed.若要解决此问题,请获取此下载 .NET Core Windows Server 托管捆绑包
- 可能还需要验证部署计算机的环境变量中是否存在 dotnet 可执行文件的路径。若要检查这一点,请首先找到 dotnet.exe 的安装路径。它通常位于 或 。知道路径后,请确保该路径存在于环境变量中。
C:\Program Files\dotnet
C:\Program Files (x86)\dotnet
控制面板>系统>高级系统设置>环境变量。突出显示“路径”,单击“编辑”并验证 dotnet 文件夹的路径是否存在。如果不是,请添加它。对用户变量和系统变量执行相同的操作。重新启动计算机,然后重试。
评论
stdoutLogEnabled="true"
stdoutLogEnabled="true"