我有一个旧的.net 1.0 web应用程序,需要对其进行一些维护。我使用自动升级程序将其升级到.net 3.5(以及后来尝试2.0),但现在它无法连接到数据库。已升级.net webapp无法打开与数据库的连接
表面上看起来像一个noob连接字符串问题,但我认为它更可能与升级中的一些细微问题有关。
我得到的一般错误消息:
在建立与服务器的连接时出错。连接到SQL Server 2005时,此故障可能是由于在默认设置下,SQL Server不允许远程连接。 (provider:命名管道提供程序,error:40 - 无法打开到SQL Server的连接)
的源代码是非常基本的,没有铃铛或口哨声:
protected static SqlConnection objConn;
objConn = new SqlConnection(strConnectionString);
try
{
objConn.Open();
}
,也尝试过作为:
using (objConn = new SqlConnection(strConnectionString))
{
objConn.Open();
...
}
连接字符串来自web.config中,并使用调试器设置一个破发点,并通过连接的属性看它试图打开它之前,我可以看到,它的发现连接字符串正确:
的connectionString = “数据源= XXX.XXX.XXX.XXX;初始目录= XXXXXX;用户ID = XXXXXX,密码= XXXXXX”
我想的事情少数我已经排除了:
无论连接到Sql Server 2005还是Sql Server 2000,错误消息都是相同的。
VS错误列表中没有错误或警告。
连接字符串与其他一些也使用相同数据库的网站相同,所以我知道连接字符串是正确的。
我试过让它从我的本地计算机(我可以通过Sql查询分析器连接到数据库)连接,从普通的网络服务器,因此它不是防火墙问题,也不是最大连接问题。
它连接到服务器的IP地址,所以它不是一个电脑浏览器问题(和其他的web应用可以正常连接。
TCP和命名管道是在SQL Server上启用了2个网络协议。
在连接字符串中添加“Network Library = DBMSSOCN;”会将错误消息更改为包含“provider:TCP Provider,error”(有一天我在连接字符串中进行了更改,但也有影响,不要记得现在。)
我已经通过堆栈溢出3楼其他类似的帖子已经看到:
(无法列出这里链接,因为我是一个新用户,但他们的问题的ID,如果其他人想要在链接到它们评论是:63875,1038888,846479)
而这篇文章在其他网站上有东西一些好的想法去尝试这并没有帮助:
http://weblogs.sqlteam.com/tarad/archive/2008/05/23/60609.aspx
我最好的猜测是,它的东西引起的.net版本之间的升级 - 在web.config中可能出错了?
这是一个C#应用程序,很小/基本,但已被分成三个项目。
更新到3.5时,我想确定一些事情:你在3.5sp1上还是只在基础上3.5? – 2009-08-06 04:44:55
另外,您是否可以使用同一个服务器上的相同连接字符串连接到数据库? – 2009-08-06 04:45:36
你说你可以通过SQL Server Management工作室(或查询分析器)进行连接,你是否也在你遇到问题的机器上测试它(从你的文本中不完全清楚)? – Gertjan 2009-08-06 06:07:47