IIS 模块继承

IIS 模块继承

我正在尝试设置一个同时具有公共端和私有端的 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}。由于多种原因,这并不理想:

  1. 每个人都知道的 URL 必须改变(包括/private/
  2. 这会暴露一些底层文件夹结构,这并不理想(例如,为什么用户需要知道私人目录甚至存在......)

如果我将应用程序的路径设置为 (/) -- 那么自定义身份验证模块不会被继承。如果我尝试在根级别创建一个指向 /appN 的虚拟文件夹(从而保留原始 URL)-- 应用程序无法正确加载(看起来它使用了错误的应用程序池 -- 不能 100% 确定。)

因此,总而言之,有没有办法让 IIS 根据磁盘上的文件夹结构进行继承(不一定是 Web 路径中的结构?)或者,有没有办法给 IIS 应用程序一个“别名”(例如,它位于/private/appN,但它也会监听 处的命中/appN)。

谢谢您的帮助,非常感谢您的建议。

相关内容