IIS 和 Asp.net MVC Intranet 应用程序的 Windows 身份验证问题

Posted

技术标签:

【中文标题】IIS 和 Asp.net MVC Intranet 应用程序的 Windows 身份验证问题【英文标题】:Windows Authentication issue with IIS and Asp.net MVC Intranet Application 【发布时间】:2012-08-07 20:19:36 【问题描述】:

所以我一直在开发一个从现有数据库中提取数据的 MVC 应用程序。我将其设计为“Intranet 应用程序”,以便用户使用其 Windows 凭据自动登录到该应用程序。这是可行的,因为属性 @User.Identity.Name 返回我的 Windows 登录名。 (以及其他用户),并且他们可以访问应用程序本身。但是,当尝试访问信息所在的数据库时,我收到以下错误:

[SqlException (0x80131904): 用户“**我的电脑名**”登录失败。]

它似乎正在识别我的 Windows 登录名,但由于某种原因试图使用我的机器名来访问数据库。在公司,这个特定的数据库也是使用员工的 windows 用户名访问的,所以我希望人们能够使用 MVC 应用程序中内置的 windows 身份验证自动访问它。

在我的 web.config 中,我将身份模拟设置为 false,身份验证模式等于 Windows,并在 appSettings 中设置了以下键:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusivejavascriptEnabled" value="true" />
<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false" />

连接字符串是为我自动生成的,并且在从 Visual Studio 运行应用程序时可以检索信息,因此我只能假设这是 IIS 设置的问题。 (我以前从未部署过 MVC 应用)

在应用程序的 IIS 设置中,我禁用了除 Windows 身份验证之外的所有身份验证。任何想法我做错了什么?如果您还需要任何其他信息,请告诉我。

【问题讨论】:

你的 sql 连接字符串是什么样的? 【参考方案1】:

在您的身份验证配置中启用模拟。否则,应用程序池的标识将用于连接到您的 Sql Server。

【讨论】:

哇,我发誓我试过了,但这确实有效。谢谢楼主!

以上是关于IIS 和 Asp.net MVC Intranet 应用程序的 Windows 身份验证问题的主要内容,如果未能解决你的问题,请参考以下文章

IIS6 上的 ASP.NET MVC

ASP.NET MVC 6 使用 IIS 开发无需发布

使用 Asp.Net MVC 和 IIS 上传大于 3GB 的文件

ASP.Net MVC 3/4 托管在 IIS 7.5 默认处理程序映射上

如何使用 IIS 7.5 压缩来自 ASP.NET MVC 的 Json 结果

在 IIS 上使用 .NET Core 运行 ASP.NET 5 (MVC 6)