IIS/SQL Server连接错误

Ibr*_*gdy 27 c# asp.net iis sql-server-2008

我正在做一个示例代码,我陷入了一个非常奇怪的行为,我试图使用此连接字符串连接到SQL Server

"Data Source=" + ServerName + "." + DomainName  + ";Initial Catalog="+DBName+";Integrated Security = false;Persist Security Info=false;User ID=sa;Password=" & Mypassword & ";Connection Timeout=90"
Run Code Online (Sandbox Code Playgroud)

显然我没有使用Windows集成身份验证或(SSPI),当我在Web应用程序上使用它时,我收到此错误:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

请注意,我创建了一个.Net应用程序,该应用程序使用相同的连接字符串,并且从IIS所在的计算机运行,并且工作正常.

以下是我所做的步骤:

  1. 我检查了我打开它的SQL客户端配置,并启用了协议tcp和命名管道.

  2. 我在IIS上进行了模拟并使用了Windows身份验证,并确保IIS使用与我相同的凭据.

  3. 我用Wireshark看到wut是两个连接之间的区别,我无法理解输出,但似乎从IIS它总是尝试使用Windows身份验证,虽然我已经明确地使字符串,使它不使用Windows身份验证基本上发生的是,在连接开始时的某些协商似乎从两个应用程序"not_defined_in_RFC4178 @ please_ignore"相同,然后IIS总是转到NTLMSSP注意到我的用户除了通过用户名之外没有访问数据库的权限和密码,因此当IIS从应用程序正常成功时,协商会失败.

我的问题是如何解决这个问题,我假设有一些配置要求IIS中的任何SQL客户端使用Windows身份验证,但我不知道在哪里或如何禁用它

我注意到我没有使用web.configSQL Server连接字符串的配置,IIS7会出现此问题.

Joh*_*ner 7

以下是我要检查的第一件事:

  1. 验证应用程序池用户是否有权访问网络资源

    • 由于您声明它在您登录计算机时有效,请尝试将应用程序池用户更改为您登录计算机的用户.
  2. 检查您的web.config中是否启用了模拟.如果这样做,请确保用户可以访问网络资源.

  3. 尝试更改连接字符串以使用IP地址(作为测试).如果这解决了问题,可能是某种DNS问题.

    • 确保在IP地址末尾包含a,1433
    • Network Library=DBMSSOCN在您的连接字符串中设置.(有关详细信息,请参阅ConnectionStrings.com上的这篇文章.)

  • 在SQL Server计算机上尝试相同的连接字符串.还要确保防火墙允许SQL Server计算机上的1433入站. (3认同)

Roh*_*yas 2

检查服务器名称、域名、数据库名称和我的密码的值。他们正确吗?他们如何居住?