服务器版本 = 'cmd.Connection.ServerVersion' 抛出了一个类型为 'System.InvalidOperationException' 的异常。

3

我注意到其他人也遇到了同样的问题,但是找不到解决方法。我的ASP.NET应用程序之前一直工作得很好,突然出现了这个问题。它没有抛出任何异常,但是存储过程返回的值与以前不同。当我调试程序时,发现我的SqlCommand存在问题。

SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@UserID", Convert.ToInt64(Request.QueryString["UserID"]));
DataTable dtuser = db.GetDataTable(cmd, "sp_GetUserbyUserId");

我添加了一个观察器并在cmd上查看。连接的ServerVersion属性显示以上信息,而Message属性则显示“无效操作。连接已关闭。” 我认为这可能导致我的SPs无法正常运行。这里可能会有什么问题呢?最近我在web.config中做的更改只是在appSettings下添加了一个新字段。
编辑: 以下是我的DBHandler类方法,由上面的db实例调用。
public class DBHandler
{
    private string connectionString = "";
    public DBHandler()
    {    
        connectionString = WebConfigurationManager.ConnectionStrings["myConString"].ConnectionString.ToString();
    }

    public DataTable GetDataTable(SqlCommand sqlcmdWithParameters, string CommandText)
        {
            DataTable dtReturn = new DataTable();
            SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmdWithParameters);

            using (SqlConnection sqlcon = new SqlConnection(connectionString))
            {
                sqlcmdWithParameters.Connection = sqlcon;
                sqlcmdWithParameters.CommandType = CommandType.StoredProcedure;
                sqlcmdWithParameters.CommandText = CommandText;
                try
                {
                    DataSet ds = new DataSet();
                    sqlda.Fill(ds, "Table");
                    dtReturn = ds.Tables["Table"];
                }
                catch (Exception ex)
                {
                   //Handling Exceptions
                }
            }
            return dtReturn;
        }
}

我在Web.config中的连接字符串如下:

<connectionStrings>    
    <add name="myConString" connectionString="Data Source=xxx.xxx.x.x;Initial Catalog=myDB;User ID=myId;Password = myPWD" providerName="System.Data.SqlClient" />
  </connectionStrings>

你需要发布更多的代码。你如何打开/关闭连接? - Szymon
1
嗨@Szymon,我在那里添加了更多的代码。这会帮助你给我提供建议吗? - highfive
1个回答

0

我刚刚遇到了同样的错误。在我的电脑上,当我打开Visual Studio 2013时,我卸载并重新安装了Oracle数据提供程序。

重新安装Oracle后,我运行了我的正常工作的asp.net应用程序,并在尝试打开数据库连接时出现了这个错误。

关闭Visual Studio并重新打开后,错误消失了。也许是因为重新打开Visual Studio时,“ServerVersion”被无效化,然后重置了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接