MVC Web Api不允许Windows身份验证

时间:2014-04-23 05:22:17

标签: asp.net security authentication asp.net-web-api2

我有一个简单的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身份验证设置为禁用,并显示为灰色,因此我无法在此处设置它。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果您阅读applicationHost.config,您将看到与身份验证相关的部分被锁定且无法在web.config中重写,

<section name="windowsAuthentication" overrideModeDefault="Deny" />

因此,您需要在applicationHost.config中指定它。 IIS和IIS Express都有这样的限制。