IIS Express Windows身份验证


245

我正在尝试将IIS Express与VS2010一起使用来托管silverlight应用程序。我修改了applicationhost.config文件,以允许修改正确的配置设置。我的web.config中包含以下内容:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

我没有通过身份验证,我的域服务调用以用户身份返回空记录。在安装VS2010 SP1 BETA之后,我能够使它工作,但是我试图使它仅与IIS Express一起工作。

如何使Windows身份验证能够与IIS Express一起使用。我是否缺少配置设置?

Answers:


276

选项1

编辑\My Documents\IISExpress\config\applicationhost.config文件并启用windowsAuthentication,即:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

选项2

解锁\ My Documents \ IISExpress \ config \ applicationhost.config中的WindowsAuthentication部分,如下所示

<add name="WindowsAuthenticationModule" lockItem="false" />

将所需身份验证类型的替代设置更改为“允许”

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

在应用程序的web.config中添加以下内容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

以下链接可能会有所帮助:http : //learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

安装VS 2010 SP1后,可能需要应用选项1 + 2才能使Windows身份验证正常工作。另外,您可能需要在IIS Express applicationhost.config中将匿名身份验证设置为false:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

对于VS2015,IIS Express应用程序主机配置文件可能位于以下位置:

$(solutionDir)\.vs\config\applicationhost.config

<UseGlobalApplicationHostFile>项目文件中的选项将选择默认或特定于解决方案的配置文件。


谢谢。但是我确实尝试了上面的选项。但是我仍然无法使用Windows身份验证。我想我只需要等待VS2010 / SP1来获得此功能。
标记

3
选项二为我工作。花了一段时间找到这篇文章!
TodK 2011年

自从VS2010 sp1问世以来,这个问题不再适用。我试图在不安装sp1的情况下使其正常工作。我的猜测是sp1正在做一些我无法弄清的第一次设置。我可以继续并将此答案标记为正确,尽管实际上不是因为未安装sp1是前提条件。
马克

1
谢啦!NTLM通过禁用匿名身份验证来工作。
罗伯·安吉利尔

4
在VS2015中,IIS Express配置移到了解决方案结构中,特别是$(SolutionDir)\。vs \ config \ applicationhost.config,可悲的是,它没有考虑MyDocuments \ IISExpress下的现有配置,因此需要读取任何自定义项。
Tedford

401

Visual Studio 2010 SP1和2012增加了对IIS Express的支持,从而无需编辑尖括号。

  1. 如果还没有,请右键单击Web风格的项目,然后选择“使用IIS Express ...”。
  2. 完成后,选择Web项目,然后按F4聚焦“属性”面板。
  3. 将“ Windows身份验证”属性设置为“已启用”,并将“匿名身份验证”属性设置为“已禁用”。

在此处输入图片说明

我相信这种解决方案优于vikomall的选项。

  • 选项1是所有IIS Express站点的全局更改。
  • 选项2将开发工作留在web.config中。
    • 此外,除非您在IIS服务器的applicationHost.config上执行“解锁”过程,否则在部署到IIS 7.5时可能会导致错误。

上面基于UI的解决方案在IIS Express的applicationHost.config中使用了特定于站点的位置元素,从而使应用保持不变。

此处的更多信息:http : //msdn.microsoft.com/zh-cn/magazine/hh288080.aspx


5
为了强调我错过的内容,属性上下文菜单和Alt-Enter快捷方式并不能完全取代允许您更改是否启用Windows身份验证的属性窗格详细信息。使用F4或单击属性窗格以实际查看属性。
Kaleb Pederson

在开始本文之前,我已经花了几天时间来完成这项任务:msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx 基本上,不考虑原始文章中的所有内容,请重新开始“原始” applicationhost.config,然后按照此答案启用设置。最后,我获得Windows身份验证!谢谢!!
DaveN59

最终将.csproj中的IISExpressWindowsAuthentication设置从“ enabled”更改为Disabled。<IISExpressWindowsAuthentication>已禁用</ IISExpressWindowsAuthentication>
Cameron Taggart

7
这两个选项对我来说都是灰色的,并且已禁用。知道为什么吗?
2013年

1
这两个选项显示为灰色,因为您在IIS Express Config中具有此选项。<section name =“ anonymousAuthentication” overrideModeDefault =“ Allow” /> <section name =“ windowsAuthentication” overrideModeDefault =“ Allow” />删除了overrideModeDefault =“ Allow “他们将摆脱困境
Micah Armantrout

9

根据booij boy的回答,检查是否检查了控制面板->程序->打开Windows功能的“ Windows身份验证”功能-> Internet信息服务->万维网服务->安全性

另外,在使用Firefox或Internet Explorer时似乎也有很大的不同。启用“ Windows身份验证”后,它对我有效,但仅在IE中有效。


2
:它让工作在Firefox markmonica.com/2007/11/20/...
bees73


5

除了这些出色的答案之外,在IISExpress开发环境中,并且为了阻止臭名昭著的“ system.web/identity@impersonate”错误,您可以简单地确保applicationhost.config文件中存在以下设置。

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

这将使您在开发和测试期间具有更大的灵活性,尽管一定要确保您已了解在生产环境中使用此设置的含义。

有用的帖子:


完全偶然地落在了这个上,但是它起作用了:-)
joshmcode '16

2

在IIS管理器中,单击您的站点。您需要处于“处于功能视图”(而不是“内容视图”)

在“功能视图”的IIS部分中,选择所谓的功能“身份验证”,然后单击确定。您可以在此处启用Windows身份验证。通过web.config(...)中的设置,这也是可能的(我认为是该线程中的建议之一)

但是也许您有一个web.config文件,您不想过多地研究。然后,这个线程不会有太多帮助,这就是为什么我添加了这个答案。


0

如果以下情况,此答案可能会有所帮助:1)您的站点在升级到Visual Studio 2015之前曾经使用Windows身份验证,并且2)并且您的站点正在尝试加载/login.aspx(即使您的站点上没有此类文件)。

将以下两行添加到appSettings您网站的部分Web.config

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

0

在同一条笔记上-VS 2015,.vs \ config \ applicationhost.config不可见或不可用。

默认情况下,.vs文件夹是隐藏的(至少在我而言)。

如果找不到.vs文件夹,请按照以下步骤操作。

  1. 右键单击解决方案文件夹
  2. 选择“属性”
  3. Attributes部分中,单击Hidden复选框(默认未选中),
  4. 然后点击“应用”按钮
  5. 它将显示确认窗口,选中“将更改应用于此文件夹,子文件夹和文件”选项,然后单击“确定”。

    重复步骤1至5,但在上除外step 3,这一次您需要使用uncheck先前检查的“隐藏”选项。

现在应该可以看到.vs文件夹了。


0

完成上述答案中的所有步骤后,我发现我没有以Admin身份运行Visual Studio。以管理员身份运行后,问题已解决。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.