升级的.net webapp可以';无法打开到数据库的连接

升级的.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的连接) 源代码

我有一个旧的.NET1.0WebApp,需要对其进行一些维护。我曾经使用自动升级程序将其升级到.NET3.5(后来也尝试了2.0),但现在它无法连接到数据库

从表面上看,这看起来像是一个noob连接字符串问题,但我认为这更可能与升级过程中的一些微妙问题有关


我收到一般错误消息:

建立与服务器的连接时出错。连接到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上进行远程连接完全无关。但正如我所发现的,这与此无关!(我不知道实际原因!)我花了几个小时才发现,所以也许这对某人有帮助

你必须做什么(请使用谷歌了解详情):

  • 允许通过SQL Server 2005外围区域配置工具进行本地和远程连接 (我选择“同时使用TCP/IP和命名管道”选项)
  • 启用SQL Server浏览器服务
  • 通过SQL Server Configuration Manager工具将所有IP的侦听TCP端口设置为1433
  • 享受你的跑步网络应用:-)

  • 我无法理解为什么要成功地从.NET 3.5 Web应用程序连接到SQL Server,而它已经可以从.NET 2.0运行了

    由于从来没有为这个问题提供实际的解决方案,下面是一个帮助我的解决方案:

    当我将运行良好的ASP.NET2.0应用程序升级到.NET3.5时,我遇到了完全相同的问题。该web应用程序由II托管