我有一箇舊的.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