【问题标题】:Configure IIS 8 for SQL Server Authentication为 SQL Server 身份验证配置 IIS 8
【发布时间】:2014-08-18 19:32:50
【问题描述】:

在 MVC 4 网站中尝试从 Windows 2012 IIS 8.5 查询 SQL Server 2012 时出现以下错误:

SqlException (0x80131904): 用户 [域/用户] 登录失败

我在 Web.config 中设置了连接字符串,就像我们在过去所做的那样:

<add name="MYPROJECT.Properties.Settings.defaultConn" connectionString="Data Source=MYSERVER;Initial Catalog=MYDATABASE;Persist Security Info=True;User ID=MYUSER;Password=MYPASSWORD"

IIS8 似乎使用应用程序池登录,绕过了 Web.config 中的连接字符串。

数据库和网站位于不同的服务器上。有没有一种简单的方法可以配置 IIS 以绕过应用程序池并从 Web.config 读取连接字符串?

【问题讨论】:

  • 你确定那是失败的连接字符串吗?
  • 没有连接字符串被完全忽略。错误中显示的 [域/用户] 是在 IIS 中为应用程序池配置的用户。我想知道如何让 IIS 绕过应用程序池并从 Web.config 读取连接字符串。
  • IIS 在这里没有做任何事情。它对连接字符串或 SQL Server 一无所知。您根本没有使用您认为正在使用的连接字符串。
  • 是的,这确实是个问题。 IIS 只是忽略 web.config 中的连接字符串,而是尝试通过应用程序池进行身份验证。我希望绕过应用程序池并让它读取 web.config 中的连接字符串。

标签: asp.net sql-server asp.net-mvc-4 iis


【解决方案1】:

如果 Persist 安全信息设置为 true,它将被忽略。来自MSDN

ConnectionString 类似于 OLE DB 连接字符串,但不相同。与 OLE DB 或 ADO 不同,返回的连接字符串与用户设置的 ConnectionString 相同,如果 Persist Security Info 值设置为 false(默认值),则减去安全信息。除非您将 Persist Security Info 设置为 true,否则用于 SQL Server 的 .NET Framework 数据提供程序不会在连接字符串中保留或返回密码。

【讨论】:

  • 我有“Persist Security Info=True;”当我在本地开发时,这很有效。我刚刚将其切换为“Persist Security Info=False;”并得到同样的错误。 web.config 中的用户是 sql server 用户,而错误中的用户是应用程序池中的域用户。不确定我应该使用哪个设置,但目前它们都返回相同的错误。
  • 也许是个愚蠢的问题,但是您是否将 SQL Server 设置为接受 SQL Server 身份验证?如果不是这种情况,我猜它会尝试使用应用程序池用户访问数据库。
  • SQL Server 设置为混合身份验证。当我在本地开发时,web.config 连接字符串有效,它只是被 Windows 2012 Server IIS 8 忽略。相反,它试图通过应用程序池用户帐户进行身份验证。
  • 您在本地和生产环境中都运行 MS SQL 2012 和 IIS 8.5?请更新您的帖子以更详细地描述您的环境。帮助我们帮助您。
  • 本地我在 Windows 7 上运行 .NET 2012。我在两种环境中通过网络连接相同的 2012 SQL Server。在生产中,我在运行 IIS 8 的 2012 Windows Server 上安装 MVC 项目。一切都按预期在本地运行。但是,在生产中,IIS 8 正在通过应用程序池连接到 SQL Server,并尝试通过 Windows 帐户 (DOMAIN.USER$) 进行连接。它完全忽略了 Web.config。所以问题是,如何配置 IIS 8 以使用 SQL Server 身份验证进行连接。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
相关资源
最近更新 更多