2015-12-14 81 views
1

我收到一個錯誤,我無法在任何地方找到答案。它說ServerVersion的'conn.ServerVersion'拋出了一個'System.InvalidOperationException'類型的異常(見截圖)我已經阻止了一些單詞,以免損害我們的數據。它甚至沒有建立連接。無法連接到SQL,ERROR = ServerVersion'conn.ServerVersion'拋出類型'System.InvalidOperationException'的異常

Screenshot

此連接字符串在以前的應用程序版本作品(的Visual Studio 2012,使用Microsoft.Practices.EnterpriseLibrary.Data.Sql的.NET Framework 4.5.2),所以我知道這是不是憑據。我們正在重寫舊應用程序,以便新應用程序使用Visual Studio 2015,.NET Framework 4.5.2和System.Data.SqlClient。

這裏是WEB.CONFIG連接字符串:

<connectionStrings> 
<add name="DataConnection" connectionString="Data Source=mydatabaseserver\tst1;Initial Catalog=LeaseData;Persist Security Info=True;User ID=myID;Password=mypassword" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

這是我的C#代碼中使用我的連接字符串,它是在我的web配置調用數據庫。

public static DataTable ContractDetails(string contractID, string pointOfContact) 
    { 
     string connString = ConfigurationManager.ConnectionStrings["DataConnection"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(connString)) 
     { 
      try 
      { 
       if (connString.Length > 0) 
       { 
        using (SqlCommand cmd = new SqlCommand("spNameOfStoredProcedure")) 
        { 
         using (SqlDataAdapter da = new SqlDataAdapter()) 
         { 
          cmd.CommandType = CommandType.StoredProcedure; 
          cmd.Connection = conn; 
          da.SelectCommand = cmd; 

          cmd.Parameters.AddWithValue("@ContractID", contractID); 
          cmd.Parameters.AddWithValue("@PointOfContact", pointOfContact); 
          cmd.ExecuteNonQuery(); 

          using (DataTable dt = new DataTable()) 
          { 
           da.Fill(dt); 
          } 
         } 
        } 
       } 
      } 
      catch (SystemException) 
      { 

      } 
     } 

讓我知道是否還有其他任何有助於解決此問題的方法!

謝謝!

+0

您確定ContractID參數預計是存儲過程中的nvarchar嗎? – Steve

+0

我沒有看到conn.Open()在任何地方,你需要打開你的連接到數據庫,然後才能執行命令。 – Bearcat9425

+0

@ Bearcat9425不適用於適配器,您不需要。 – LarsTech

回答

0

在截圖中,您正在查看DataAdapter打開連接之前的連接屬性。因此,該連接在該點關閉 - 因此在調用ServerVersion時發生InvalidOperationException。見MSDN

+0

因爲我正在運行包含的代碼,所以我在屏幕截圖中看到了同樣的錯誤。我在修正和更改邏輯之前截取了屏幕截圖。 –

+0

您共享的代碼不會調用ServerVersion屬性上的get,這表明該調用是由您提到的專有日誌記錄系統調用的。這可能會隱藏根錯誤。什麼行實際上引發錯誤,當你通過? ServerVersion錯誤肯定是現在最初拋出的錯誤? – strickt01

+0

我最終通過刪除try-catch並從非常基礎開始解決這個問題,然後給了我一個更詳細的錯誤,指出存儲過程在指定的數據庫中找不到。 STUPID MISTAKE-我發現我使用的存儲過程是在不同的連接字符串中。只有擁有更好的錯誤信息纔會更好! –

相關問題