我使用 Visual Studio 2015 在 asp.net core 1.0.1 版本中开发了一个 Web api,当我在开发它的同一台电脑的 IIS 10 中发布该 Web api 时,一切正常。当我将Web api的发布文件夹复制并粘贴到另一台电脑时,出现问题,浏览器显示错误500.19内部服务器错误,错误代码0x8007000d,“无法访问请求的页面,因为页面的相关配置数据无效”,这会导致 web.config 中出现一些问题。
我不认为 IIS 的版本有问题,因为从 IIS 10 迁移到 IIS 8 或从 IIS8 迁移到 IIS 10 会产生相同的错误,并且在两台具有 IIS 10 的电脑之间也会发生同样的错误。
我已经审查了几个相关问题,例如,元素“system.webServer”具有无效的子元素“aspNetCore” https://stackoverflow.com/questions/37945539/the-element-system-webserver-has-invalid-child-element-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,到目前为止它只能在开发的电脑上正常工作。
要获取更详细的错误消息:
验证 Web 配置引用的路径中是否存在日志目录。如果没有,请创建它。配置中显示的路径会将“logs”目录放置在已部署站点的根文件夹中。
验证应用程序池是否具有对日志目录的写访问权限,并且
验证 `stdoutLogEnabled="true"。
如果您已验证所有这 3 项,那么您应该获得包含更详细的错误描述的日志条目
什么可能导致“500.19 内部服务器错误,错误代码 0x8007000d”错误?
- .NET Core 托管捆绑包未安装在部署站点的 Web 服务器上。要解决此问题,请获取此下载.NET Core Windows Server 托管捆绑包 https://aka.ms/dotnetcore-2-windowshosting
- 您可能还想验证部署计算机的环境变量中是否存在 dotnet 可执行文件的路径。要检查这一点,首先找到 dotnet.exe 的安装路径。它通常位于
C:\Program Files\dotnet
or C:\Program Files (x86)\dotnet
。知道路径后,请确保该路径存在于环境变量中。
控制面板 > 系统 > 高级系统设置 > 环境变量。突出显示“路径”,单击“编辑”并验证 dotnet 文件夹的路径是否存在。如果没有,请添加它。对用户变量和系统变量执行相同的操作。重新启动您的机器并重试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)