在本地机器上,我在多个网站上工作,并在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>
我要怎么做才能让我的网站设置自己的身份验证模式?
发布于 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>
发布于 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>
https://stackoverflow.com/questions/-100008550
复制相似问题