![IIS 模块继承](https://linux22.com/image/588374/IIS%20%E6%A8%A1%E5%9D%97%E7%BB%A7%E6%89%BF.png)
我正在尝试设置一个同时具有公共端和私有端的 IIS 站点。公共端使用匿名身份验证,而私有端使用我提供的自定义身份验证模块,以下是结构概述(应用程序池名称在 中[]
):
+SITE ROOT [default_app_pool]
|-public [default_app_pool] (folder converted to application)
| -- folderA
| -- folderB
| -- folderC
| -- publicApp [publicApp]
|-private [default_app_pool] (folder converted to application)
| -- bin
| >> custom_auth_module.dll
| -- app1 [app1]
| -- app2 [app2]
| -- app3 [app3]
在这个场景中,文件夹private
有一个web.config
提供自定义身份验证模块(以及一些其他成员资格提供程序设置)
结构和应用程序池的设置很简单,但我在使身份验证正常工作时遇到了一些麻烦。理想情况下,app1...app3 应该只从父目录 (private) 继承身份验证。但是,这似乎只有在应用程序的路径(在基本设置下)为 时才有效/private/{appN}
。由于多种原因,这并不理想:
- 每个人都知道的 URL 必须改变(包括
/private/
) - 这会暴露一些底层文件夹结构,这并不理想(例如,为什么用户需要知道私人目录甚至存在......)
如果我将应用程序的路径设置为 (/) -- 那么自定义身份验证模块不会被继承。如果我尝试在根级别创建一个指向 /appN 的虚拟文件夹(从而保留原始 URL)-- 应用程序无法正确加载(看起来它使用了错误的应用程序池 -- 不能 100% 确定。)
因此,总而言之,有没有办法让 IIS 根据磁盘上的文件夹结构进行继承(不一定是 Web 路径中的结构?)或者,有没有办法给 IIS 应用程序一个“别名”(例如,它位于/private/appN
,但它也会监听 处的命中/appN
)。
谢谢您的帮助,非常感谢您的建议。