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所在的计算机运行,并且工作正常.
以下是我所做的步骤:
我检查了我打开它的SQL客户端配置,并启用了协议tcp和命名管道.
我在IIS上进行了模拟并使用了Windows身份验证,并确保IIS使用与我相同的凭据.
我用Wireshark看到wut是两个连接之间的区别,我无法理解输出,但似乎从IIS它总是尝试使用Windows身份验证,虽然我已经明确地使字符串,使它不使用Windows身份验证基本上发生的是,在连接开始时的某些协商似乎从两个应用程序"not_defined_in_RFC4178 @ please_ignore"相同,然后IIS总是转到NTLMSSP注意到我的用户除了通过用户名之外没有访问数据库的权限和密码,因此当IIS从应用程序正常成功时,协商会失败.
我的问题是如何解决这个问题,我假设有一些配置要求IIS中的任何SQL客户端使用Windows身份验证,但我不知道在哪里或如何禁用它
我注意到我没有使用web.configSQL Server连接字符串的配置,IIS7会出现此问题.
以下是我要检查的第一件事:
验证应用程序池用户是否有权访问网络资源
检查您的web.config中是否启用了模拟.如果这样做,请确保用户可以访问网络资源.
尝试更改连接字符串以使用IP地址(作为测试).如果这解决了问题,可能是某种DNS问题.
Network Library=DBMSSOCN在您的连接字符串中设置.(有关详细信息,请参阅ConnectionStrings.com上的这篇文章.)