IIS Express Windows身份验证

时间:2011-01-21 18:41:26

标签: visual-studio-2010 visual-studio windows-authentication iis-express

我正在尝试使用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。是否有我缺少的配置设置?

10 个答案:

答案 0 :(得分:397)

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

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

    我相信这个解决方案优于vikomall的选择。

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

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

    更多信息: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx

答案 1 :(得分:272)

选项-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 applicationhost配置文件可能位于此处:

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

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

答案 2 :(得分:9)

根据booij boy的回答,检查您是否选中了“Windows身份验证”功能 控制面板 - &gt;程序 - &gt;打开或关闭窗口功能 - >互联网信息服务 - &gt;万维网服务 - &gt;安全

此外,使用firefox或Internet Explorer时似乎有很大的不同。 在启用“Windows身份验证”之后,它适用于我,但仅适用于IE。

答案 3 :(得分:5)

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

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

这将使您在开发和测试期间具有更大的灵活性,但请务必在此之前了解在生产环境中使用此设置的含义。

有用的帖子:

答案 4 :(得分:2)

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

在“功能视图”的IIS部分中选择所谓的“身份验证”功能 并且doulbe点击它。 您可以在此处启用Windows身份验证。 通过web.config(...)

中的设置也可以(我认为在线程中的一个建议中)

但也许你有一个web.config,你不想过多地注释。 那么这个帖子就不会有太多的帮助,这就是为什么我添加了这个答案。

答案 5 :(得分:0)

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

将以下两行添加到网站appSettings的{​​{1}}部分。

Web.config

答案 6 :(得分:0)

在同一个音符上 - VS 2015,.vs \ config \ applicationhost.config不可见或不可用。

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

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

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

    重复步骤1到5,step 3除外,这次你需要uncheck隐藏&#39;您之前检查过的选项。
  6. 现在应该可以看到.vs文件夹了。

答案 7 :(得分:0)

在完成上述答案中的所有内容之后,我发现我没有以管理员身份运行Visual Studio。以管理员身份运行后,问题就解决了。

答案 8 :(得分:0)

如果所有答案都无济于事,则可能需要调整项目属性。检查有关此操作的其他StackOverflow答案:

https://stackoverflow.com/a/20857049/56621

答案 9 :(得分:0)

我正在使用 Visual Studio 2019 针对 ASP.Net 应用程序进行开发。以下是对我们有用的方法:

  1. 打开您的项目属性窗口,禁用匿名身份验证并启用Windows身份验证
  2. 在您的 Web.Configsystem.web

<authentication mode="Windows"></authentication>p

而且我没有更改 iis express 中的 application.config。