升级的.net webapp可以';无法打开到数据库的连接
我有一个旧的.NET1.0WebApp,需要对其进行一些维护。我曾经使用自动升级程序将其升级到.NET3.5(后来也尝试了2.0),但现在它无法连接到数据库 从表面上看,这看起来像是一个noob连接字符串问题,但我认为这更可能与升级过程中的一些微妙问题有关升级的.net webapp可以';无法打开到数据库的连接,.net,sql-server,.net-3.5,upgrade,.net-1.0,.net,Sql Server,.net 3.5,Upgrade,.net 1.0,我有一个旧的.NET1.0WebApp,需要对其进行一些维护。我曾经使用自动升级程序将其升级到.NET3.5(后来也尝试了2.0),但现在它无法连接到数据库 从表面上看,这看起来像是一个noob连接字符串问题,但我认为这更可能与升级过程中的一些微妙问题有关 我收到一般错误消息: 建立与服务器的连接时出错。连接到SQL Server 2005时,此故障可能是因为在默认设置下,SQL Server不允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接) 源代码
我收到一般错误消息: 建立与服务器的连接时出错。连接到SQL Server 2005时,此故障可能是因为在默认设置下,SQL Server不允许远程连接。(提供程序:命名管道提供程序,错误: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查询分析器连接到数据库)和普通的Web服务器连接,所以这不是防火墙问题,也不是最大连接问题 它连接到服务器的IP地址,因此这不是计算机浏览器问题(其他Web应用程序可以正常连接) TCP和命名管道是sql server上启用的两种网络协议 在连接字符串中添加“Network Library=DBMSSOCN;”会将错误消息更改为包含“provider:TCP provider,error”(前几天我在连接字符串中更改了其他内容,但现在我记不起来了。)
我已经浏览了其他3篇关于堆栈溢出的类似帖子:
(因为我是新用户,所以无法在此列出链接,但他们的问题ID是:63875、1038888、846479,如果其他人想在评论中链接到他们)
另一个网站上的这篇文章有一些不错的想法可以尝试,但也没有帮助:
我最好的猜测是,这是由.net版本之间的升级引起的-可能是web.config中的错误
这是一个C#应用程序,非常小/基本,但已分为三个项目。根据,SQL 2005未配置为允许传入的本地或远程连接,您必须自己启用。根据,SQL 2005未配置为允许传入的本地或远程连接,您必须自己启用f、 我确信您已经完成了这些步骤,但是…尝试为SQL Server启用远程连接并启用SQL Server浏览器服务。可以找到两者的演练。我确信您已经完成了这些步骤,但是…尝试为SQL Server启用远程连接并启用SQL Server浏览器服务。可以找到两者的演练。您可以尝试使用其他类型的连接字符串。我的连接字符串的格式通常如下所示:
<add name="DataFrom" connectionString="SERVER=[servername];Database=[dbname];UID=[userid];PWD=[password];"/>
我想你是说
using (objConn = new SqlConnection(strConnectionString))
对吗?您可以尝试使用其他类型的连接字符串。我的连接字符串的格式通常如下:
<add name="DataFrom" connectionString="SERVER=[servername];Database=[dbname];UID=[userid];PWD=[password];"/>
我想你是说
using (objConn = new SqlConnection(strConnectionString))
对吗?编写一个控制台应用程序,该应用程序不执行任何操作,只使用您发布的代码尝试连接到数据库。在控制台程序中硬编码连接字符串
换句话说,消除所有干扰,以确保您尝试运行的核心代码实际正常工作。编写一个控制台应用程序,该应用程序只使用您发布的代码尝试连接到数据库。在控制台程序中硬编码连接字符串
换言之,消除所有干扰,以确保您尝试运行的核心代码能够正确运行。由于从未为该问题提供过实际的解决方案,以下是帮助我的解决方案: 当我将一个运行良好的ASP.NET 2.0应用程序升级到.NET 3.5时,我遇到了完全相同的问题。该web应用程序由Windows XP上的IIS 5.1托管,我使用的是SQL Server Express 2005。我在web.config中使用了以下连接字符串:
<add name="myDbConnection" providerName="System.Data.SqlClient" connectionString="Data Source=http://localhost;Server=.\SQLEXPRESS;Initial Catalog=MyDatabaseName;Integrated Security=True"/>
因此,正如您所看到的,我在这里没有进行tcp连接或连接到远程服务器。我只是通过命名管道连接本地主机上的SQLEXPRESS实例。这就是为什么我认为,这与允许在SQL server 2005上进行远程连接完全无关。但正如我所发现的,这与此无关!(我不知道实际原因!)我花了几个小时才发现,所以也许这对某人有帮助
你必须做什么(请使用谷歌了解详情):
我无法理解为什么要成功地从.NET 3.5 Web应用程序连接到SQL Server,而它已经可以从.NET 2.0运行了 由于从来没有为这个问题提供实际的解决方案,下面是一个帮助我的解决方案: 当我将运行良好的ASP.NET2.0应用程序升级到.NET3.5时,我遇到了完全相同的问题。该web应用程序由II托管