iis 为什么runAllManagedModulesForAllRequests=“true”适用于403?

emeijp43  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(433)

背景故事;**我开发MVC应用程序,在我公司的大多数Web服务器上,每当我部署MVC应用程序时,当我试图浏览该站点时,我得到403。

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

是一个解决方案摆脱,至少403的我总是得到我们的一些网络服务器(如果不是全部).

**我的问题是这个;**为什么它可以修复403?由于我的访问被拒绝,缺少了什么模块?还有什么解决方案比运行所有模块更好?

6ojccjat

6ojccjat1#

基本上,缺少的“位”是FormsAuthentication模块。
IIS核心引擎使用前提条件来确定何时启用特定模块。例如,由于性能原因,可能会确定您只希望对同时转到托管处理程序的请求执行托管模块。以下示例中的前提条件(precondition=“managedHandler”)仅为托管处理程序也处理的请求启用窗体身份验证模块,例如对.aspx或.asmx文件的请求。
如果您移除属性precondition=“managedHandler”,表单验证也会套用至不是由Managed行程常式提供的内容,例如.html、.jpg、.doc,但也会套用至传统ASP(.asp)或PHP(.php)副档名
这里的关键点是“* 窗体身份验证还适用于不由托管处理程序提供的内容,如.html、.jpg、.doc*”
设置runAllManagedModulesForAllRequests="true"会有效地使所有模块始终运行,而不管前置条件如何,这样就删除了FormsAuthenticationModule的前置条件。
https://learn.microsoft.com/en-us/iis/get-started/introduction-to-iis/iis-modules-overview#preconditions

相关问题