250

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

4

10 回答 10

407

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

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

在此处输入图像描述

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

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

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

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

于 2011-08-23T22:29:53.343 回答
278

选项 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>项目文件中的选项选择默认或特定于解决方案的配置文件。

于 2011-01-27T07:22:17.460 回答
9

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

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

于 2011-04-21T09:45:27.203 回答
5

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

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

这将使您在开发和测试期间更加灵活,但请确保您了解在生产环境中使用此设置的含义,然后再执行此操作。

有用的帖子:

于 2013-08-20T17:57:00.047 回答
2

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

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

但也许你有一个 web.config,你不想过多地浏览。那么这个线程不会有太多帮助,这就是我添加这个答案的原因。

于 2014-03-27T11:32:44.523 回答
0

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

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

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

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

    重复步骤 1 到 5,除了 on step 3,这一次您需要uncheck之前检查的“隐藏”选项。

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

于 2016-07-13T21:15:04.563 回答
0

我正在使用 Visual Studio 2019 针对 ASP.Net 应用程序进行开发。这是为我们工作的:

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

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

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

于 2021-01-25T09:10:12.120 回答
0

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

于 2016-07-19T14:16:50.867 回答
0

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

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

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
于 2016-02-22T17:29:41.053 回答
0

如果没有任何答案有帮助,您可能需要调整项目属性。检查this other StackOverflow answer关于如何做到这一点:

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

于 2019-08-29T07:51:46.887 回答