403.18 - 禁止 指定的请求无法在 Web 服务器上为此资源配置的应用程序池中处理

问题描述 投票:0回答:3

我不明白为什么我会收到这篇文章标题中的错误。

我有一个网站在 .NET V4.0 中运行自己的应用程序池。 在网站下,我有一个应用程序在其自己的应用程序池上以“无托管代码”运行,作为其 C# .NET 5.0 REST Web API。应用程序指向服务器上与网站不同的物理位置。

为什么当我导航到所需的 URL 时会收到以下错误:

403.18 - 禁止 指定的请求无法在 Web 服务器上为此资源配置的应用程序池中处理。

当我尝试使用正确的 URL 从 POSTMAN 调用 REST 服务时,我从服务器收到以下响应:

<TITLE>403 Forbidden</TITLE>
<BASE href="/error_docs/"><!--[if lte IE 6]></BASE><![endif]-->
</HEAD>
<BODY>
<H1>Forbidden</H1>
You do not have permission to access this document.

我已经正确设置了文件夹权限,但是我仍然收到此错误。

asp.net-web-api .net-5 iis-10
3个回答
4
投票

403.18错误的原因有很多:

  • ISAPI 过滤器或自定义模块更改了 URL 以在 与原始 URL 不同的应用程序池。
  • ISAPI 扩展(或自定义模块)使用 ExecuteURL(或 ExecuteRequest)在与应用程序池不同的应用程序池中运行 原网址。
  • 您有一个位于一个应用程序池中的自定义错误页面 但被另一个应用程序池中的网站引用。当。。。的时候 URL 已处理,由 IIS 确定它应该具有 已在第一个应用程序池中处理,而不是在另一个池中处理。
  • 该网站配置了多个应用程序。应用程序 此请求配置为在设置为在应用程序中运行 不存在的池。

您可以尝试的事情:

  • 如果您有一个应用程序正在尝试处理另一个应用程序中的 URL 应用程序池(例如尝试处理自定义错误),确保 如果合适的话,它们都在同一个应用程序池中运行。
  • 如果您尝试处理位于以下位置的自定义错误 URL 另一个应用程序池,启用自定义错误重定向功能。
  • 验证应用程序的应用程序池是否存在。
  • 创建跟踪规则来跟踪此 HTTP 状态的失败请求 代码并查看是否正在调用 ExecuteURL。

0
投票

对于我来说,我的一个虚拟应用程序上的一个文件夹缺少 dot net 标准 DLL。如果上面的答案不能解决问题,那么最好不要比较损坏的 ENV 和工作的 ENV 之间的目录。


0
投票

我们遇到了类似的问题,对我们有用的是通过 Windows 2019 服务器上的“添加角色和功能”删除和添加 ISAPI 过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.