【发布时间】:2020-07-10 15:49:28
【问题描述】:
我正在开发 Asp.Net Core 3.1 API。它运行良好,我将它部署在 IIS 上,它给了我以下错误。
HTTP 错误 403.14 - 禁止
我已经找到了问题的根本原因,我将我的观察记录在下面。
这是我原来的 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>
所以当我使用 Visual Studio 2019 在本地运行项目时,它会将 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="%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>
因此,当我在发布解决方案配置中发布应用程序时,它会生成带有最新更改的 web.config。当我在 IIS 中使用此发布文件夹部署 API 并运行应用程序时,会出现 403.14 错误。
为了解决这个问题,我手动将旧的 web.config 内容复制到 IIS 虚拟目录 web.config。并且我能够成功运行应用程序。
因此从中学到的是,如果我们对 web.config 进行任何更改,我们需要以不同的方式处理它,但我建议不要在 web.config 中进行任何更改,而是使用 appsettings.json 进行配置。
所以我在这里有三个问题。
- 问题的根本原因是什么,我已经提到了这个question,但不知道为什么会出现这个错误?
- 我们如何才能以更简洁的方式解决问题?
- 如果真的需要修改web.config,我们如何才能干净利落地呢?
更新:
正如@ScareCrow 在他的回答中所建议的那样,我已经进行了必要的更改,并且开始出现以下错误。
HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
事件查看器日志:
日志名称:应用程序源:IIS AspNetCore Module V2 日期:2020 年 7 月 15 日凌晨 3:29:03 事件 ID:1031 任务类别: 无级别:错误关键字:经典用户:不适用 计算机:SUSIAALGCBWSXT1.FCStone.com 描述:应用 'D:\Octopus\Applications\Beta\ISOXMLValidationApi\1.0.0.9' 失败 开始。异常消息:找不到可执行文件 'D:\Octopus\Applications\Beta\ISOXMLValidationApi\1.0.0.9%LAUNCHER_PATH%.exe' 事件 XML:
1031 2 0 0x80000000000000 1090650 应用 SUSIAALGCBWSXT1.FCStone.com 应用程序“D:\Octopus\Applications\Beta\ISOXMLValidationApi\1.0.0.9”未能 开始。异常消息:找不到可执行文件 'D:\Octopus\Applications\Beta\ISOXMLValidationApi\1.0.0.9%LAUNCHER_PATH%.exe' 进程 ID:19916。 文件版本:13.1.20142.5。说明:IIS ASP.NET Core 模块 V2。提交:844a82e37cae48af2ab2ee4f39b41283e6bb4f0e
【问题讨论】:
-
我不知道它是否仍然适用于 net core,但在 .net 框架内,此错误过去是由于 IIS 用户缺乏权限
-
@Krusty 谢谢,但它与原始 web.config 内容一起使用,所以我认为它与权限无关
-
什么请求给了你 403.14?在编写 Web API 时,您应该知道它可以处理哪些 URL(显然并非所有 URL 都可以产生 200)。
-
@LexLi 是的,它给出了 403.14
-
@viveknuna 您启用了哪个 iis 功能?确保您有足够的权限分配给发布文件夹。您如何在 iis 中发布网站?确保您的 iis 网站指向正确的已发布文件夹。
标签: c# asp.net-core iis asp.net-core-webapi web-deployment