asp.net – 在根站点下托管的应用程序中配置子目录验证模式

前端之家收集整理的这篇文章主要介绍了asp.net – 在根站点下托管的应用程序中配置子目录验证模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的本地机器上,我在多个网站上工作,并在IIS下的“默认”网站下运行它们。这样我可以通过这种类型的URL访问网站: http://localhost/App1/.这是结构:
  1. LocalDev (site)
  2. App1 (application)
  3. App2 (application)
  4. App3 (application)

我遇到的问题是,在App1中,我试图在App1的子目录上启用Windows身份验证,如下所示:

  1. <configuration>
  2. <location path="internal">
  3. <system.web>
  4. <authentication mode="Windows"/>
  5. <authorization>
  6. <allow users="*"/>
  7. </authorization>
  8. </system.web>
  9. </location>
  10. </configuration>

不幸的是,当我尝试访问http://localhost/App1/internal/url.aspx时,我收到这个错误

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.

App1设置为应用程序,而不是虚拟目录。我尝试更改我的machine.config以允许在任何地方更改身份验证部分:

  1. <configuration>
  2. <configSections>
  3. <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup,System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a">
  4. <section name="authentication" type="System.Web.Configuration.AuthenticationSection,PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="Everywhere"/>
  5. </sectionGroup>
  6. </configSections>
  7. </configuration>

我必须做什么才能让我的网站设置自己的身份验证模式?

解决方法

您需要在Web.config中的应用程序级别启用Windows身份验证,然后在文件夹级别进一步定义授权,允许根目录下的所有用户,并拒绝所有未经身份验证的内部文件夹。

在IIS中,确保为应用程序启用匿名身份验证和Windows身份验证。然后,修改您的Web.config如下:

  1. <configuration>
  2. <system.web>
  3. <authentication mode="Windows"/>
  4. <authorization>
  5. <allow users="*"/>
  6. </authorization>
  7. </system.web>
  8. <location path="internal" allowOverride="true">
  9. <system.web>
  10. <authorization>
  11. <deny users="?"/>
  12. </authorization>
  13. </system.web>
  14. </location>
  15. </configuration>

猜你在找的asp.Net相关文章