好吧,我很難過。我正嘗試創建一個.NET Winforms應用程序,以通過實體框架與數據庫交談。我最初創建了一個ASP.NET MVC3應用程序(帶有單獨的DAL層),可以在最初失敗後與數據庫交談。所以它第一次嘗試打開連接,它超時。如果我在瀏覽器中點擊F5,它連接正常! 我在Winforms應用程序中引用了此DAL。實體例外:底層提供程序無法使用超時打開
- 我可以通過SQL管理工作室中的SQL驗證連接到數據庫。
- 我可以在VS2010中創建ADO.NET Data類(它連接,獲取表並將連接字符串存儲在app.config中)。
- 但是,一旦我運行Winforms應用程序,我無法連接。我得到了一個帶有「Timeout過期」的InnerException的異常。
我將連接字符串從web.config複製到app.config。
SQL數據庫託管在我的Windows Home Server上,名爲SERVER。我在一個工作組(無域)。我在Management Studio和VS中使用SERVER \ SQLEXPRESS成功連接到它。
事情我已經嘗試:
- 禁用客戶機上的防火牆。
- 在服務器上啓用DTC,並將msdtc.exe添加到服務器上的排除列表中。
- 確保在SQL服務器實例上啓用命名管道。
- 嘗試了不同的SQL用戶。
- 嘗試在C#中構建連接的不同方式。
- 爲我的WinForms項目生成一個新的ADO.NET Data類(不引用DAL)。 VS連接正常,讀取表格,生成代碼。但正在運行的應用程序會導致「Timeout Expired」SqlException。
因此,運行應用程序連接失敗。當我在ProcessExplorer中觀看應用程序時,當它嘗試使用SYN_SENT消息在遠程端口4845上進行連接時,我可以在TCP窗口中看到一個條目。不知道這是否正確。
我已經谷歌和bing'd過去幾天,我已經閱讀所有的文章和Stackoverflow這裏提到這個異常的答覆,但我已經打了一堵牆。
這是VS讀取DB之後產生的ConnectionString:
<add name="LLDBEntities" connectionString="metadata=res://*/LLDB.csdl|res://*/LLDB.ssdl|res://*/LLDB.msl;provider=System.Data.SqlClient;provider connection string="data source=SERVER\SQLEXPRESS;initial catalog=LLDB;persist security info=True;user id=sa;password=sapwd;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
讚賞任何幫助,甚至對如何弄清楚發生了什麼任何提示。
你可能想改變你的sa密碼:) – 2012-04-04 21:45:37
這只是一個佔位符... :-)這不是實際的一個。 – 2012-04-04 21:58:50