首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在根站点下托管的应用程序中配置子目录身份验证模式

在根站点下托管的应用程序中配置子目录身份验证模式
EN

Stack Overflow用户
提问于 2018-05-22 01:24:53
回答 2查看 0关注 0票数 0

在本地机器上,我在多个网站上工作,并在IIS下在“默认”网站下运行它们。这样,我就可以通过这种类型的URL访问这些网站:http:/localhost/app1/。结构如下:

LocalDev (site)
    App1 (application)
    App2 (application)
    App3 (application)

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

<configuration>
  <location path="internal">
    <system.web>
      <authentication mode="Windows"/>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>

不幸的是,当我试图访问http:/localhost/app1/inside/url.aspx,我知道这个错误:

在应用程序级别之外使用一个已注册为loverDefinition=‘MachineToApplication’的部分是错误的。此错误可能是由于IIS中没有将虚拟目录配置为应用程序而引起的。

App1我尝试更改我的Machine.config以允许在任何地方更改身份验证部分:

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-05-22 10:13:00

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

在IIS中,确保两者兼备匿名认证Windows身份验证然后,按如下方式修改Web.config:

<configuration>
  <system.web>
      <authentication mode="Windows"/>
      <authorization>
        <allow users="*"/>
      </authorization>
  </system.web>
  <location path="internal" allowOverride="true">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>
</configuration>
票数 0
EN

Stack Overflow用户

发布于 2018-05-22 11:03:19

无法在子目录中更改身份验证模式。只有WebApplications可以定义此设置,该设置适用于整个应用程序。位置元素仅用于子目录中更改授权,而不是身份验证设置。

需要在IIS中将子目录创建为Web应用程序。

如果说子目录实际上已经是IIS中的一个web应用程序(错误表明情况并非如此),那么需要禁用继承。这与根目录中是否有web.config无关。如果不是,它只意味着它使用默认的机器配置设置。

可以通过在根中添加web.config来禁用继承,并使用以下元素包装system.web。

<location path="." inheritInChildApplications="false">
   <system.Web>
       ...
   </system.Web>
</location>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档