web.config中的多个/不同身份验证设置

14

如何为 Web 应用程序的不同部分设置不同的身份验证标签?比方说,我有以下内容:

/
/folder1/
/folder2/

能否为每个文件夹指定不同的<authentication/>标记?

我想让folder1使用Windows身份验证,而让folder2使用Forms身份验证。

我尝试在<location/>标记中执行此操作,但似乎不能在<location/>标记中使用<authentication/>标记,至少无法使用VS 2008内置Web服务器进行设置。

这会发生错误,提示“Error 3 It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.”

<location path="/folder1">
    <system.web>
      <authentication mode="Forms" />
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>
3个回答

11

您只能在顶级 web.config 上使用 <authentication /> 标记。您可能需要创建多个应用程序。例如,您可以在一个应用程序中创建另一个应用程序,并在每个应用程序中使用不同的身份验证模式。


1

我认为你可以在folder1上设置表单身份验证授权

<allow users="*" />

然后通过在文件夹上设置Windows权限来控制Windows访问。

我没有尝试过,但我想不出为什么这行不通。


1

这些设置仅在ASP.Net应用程序的根级别有效。如果要在子文件夹中使用不同的设置,您需要进入IIS并将该子文件夹设置为新应用程序。

完成此操作后,该文件夹将在IIs管理器中具有不同的图标。在子文件夹内,创建一个新的web.config文件,并在其中添加新的身份验证设置。

更多信息请参见创建应用程序


没错,但在VS2008调试器中,它似乎无法将这些子文件夹视为应用程序文件夹,我需要通过推送到IIS服务器进行测试。 - Tim Boland
如果您正在使用内置的Visual Studio Web服务器,那么是的,您是正确的,您需要在IIS中设置应用程序。 - Generic Error

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接