2013-03-08 70 views
0

我有麻煩,我的程序不能正常工作,一切工作在調試模式,但是當我切換到釋放我得到InvalidOperationException異常:SQL連接在釋放

_sqlcon.ConnectionString = "Data Source=" + Properties.Settings.Default.serverAdress + ";" + "Initial Catalog=" + Properties.Settings.Default.initialDB + "; User ID=" + Properties.Settings.Default.sqlID + "; Password=" + Properties.Settings.Default.sqlPass + ";" + "Connect Timeout=" + Properties.Settings.Default.timeOut + "; Asynchronous Processing = true;"; 

這是我的連接串

Data Source=.\\SQLEXPRESS;Initial Catalog=visondb; User ID=sql; Password=test;Connect Timeout=30; Asynchronous Processing = true; 

,我嘗試用簡單的打開連接

 try 
     { 
      // await dbConnAsync(_sqlcon); 
      _sqlcon.Open(); 
     } 
     catch (SqlException ex) 
     { 
      MessageBoxResult result = System.Windows.MessageBox.Show(ex.ToString()); 
     } 

但在發佈它不工作,當我使用exe我只是得到窗口「程序停止響應」。

在哪裏尋找錯誤?

+2

爲什麼不在配置中使用連接字符串? – 2013-03-08 20:07:49

回答

1

我最好的猜測(基於這裏的信息有限)將是你從你的發佈Properties.Settings.Default拉動值來生成您的連接字符串中的一個或者是

  • 空白(空字符串)或
  • 不是你所期望的。

因此創建一個無效的連接字符串。

您應該在_sqlcon.Open();之前在線上進行調試,並確保連接字符串與您在發佈模式時所期望的一致。

+0

你是對的,但是如何從調試和發佈連接字符串是不同的第一個工作是 數據源=。\ SQLEXPRESS;初始目錄= visondb;用戶ID = sql;連接超時= 30;異步處理= true; 和第二個 數據源=。\\ SQLEXPRESS;初始目錄= visondb;用戶ID = sql;密碼=測試;連接超時= 30;異步處理= true; – user1938408 2013-03-08 20:36:39

+0

@ user1938408哪一個是調試版,哪個版本?我對你的評論感到困惑。 – jadarnel27 2013-03-08 20:44:04

+0

@ user1938408您確定您要在此處顯示整個代碼嗎?你在這裏的第一個註釋中缺少的東西是你的代碼顯示的是*硬編碼*到字符串中...... – jadarnel27 2013-03-08 20:45:36