我有一个简单的MVC web api 2 IIS托管应用程序,我想启用Windows身份验证(最初不使用Owin)。我在我的开发机器上运行它并作为本地IIS运行。
所以,根据我的发现,我需要将以下内容添加到web.config
1:对于以下部分,身份验证模式=“Windows”
<system.web>
<compilation debug="true" targetFramework="4.5.1"/>
<httpRuntime targetFramework="4.5.1"/>
<authentication mode="Windows" />
</system.web>
2:然后添加以下
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true"/>
</authentication>
</security>
当我添加上面的内容并运行应用程序时(在Dev studio的调试中),我收到以下错误
HTTP错误500.19 - 内部服务器错误
配置错误此配置部分不能在此路径中使用。当该部分被锁定在父级别时会发生这种情况。锁定是默认情况下(overrideModeDefault =“Deny”),或由locationMode =“Deny”或遗留allowOverride =“false”的位置标记显式设置。
然后它专门指向此Web配置条目
配置来源:
37: <authentication>
38: <windowsAuthentication enabled="true"/>
39: </authentication>
任何人都有任何想法,为什么我会得到这个?
另外,我注意到当我切换到IIS express时,在项目属性中,Windows身份验证设置为禁用,并显示为灰色,因此我无法在此处设置它。
提前感谢您的帮助!
答案 0 :(得分:2)
如果您阅读applicationHost.config,您将看到与身份验证相关的部分被锁定且无法在web.config中重写,
<section name="windowsAuthentication" overrideModeDefault="Deny" />
因此,您需要在applicationHost.config中指定它。 IIS和IIS Express都有这样的限制。