【问题标题】:ServerVersion = 'cmd.Connection.ServerVersion' threw an exception of type 'System.InvalidOperationException'ServerVersion = 'cmd.Connection.ServerVersion' 引发了“System.InvalidOperationException”类型的异常
【发布时间】:2014-02-19 06:05:54
【问题描述】:

我注意到其他一些人也遇到了同样的问题,但无法找到解决方案。我的 ASP.NET 应用程序运行良好,突然遇到了这种情况。它不会引发任何异常,但存储过程不会像以前那样返回值。当我调试程序时发现我的SqlCommand 有问题。

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

我添加了一块手表并查看了cmdConnectionServerVersion 属性显示上述消息,Message 属性显示 "Invalid operation. The connection is closed."。我认为我的 SP 无法正常工作。这里会有什么问题? 最近我在 web.config 中所做的更改只是在 <appSettings/> 下添加了新字段

编辑
下面是我上面的db实例调用的DBHandler类方法。

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,我在那里添加了更多代码。您能给我一个建议对您有帮助吗?

标签: asp.net sql sql-server-2008


【解决方案1】:

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

在重新安装 Oracle 后,我运行了原本可以正常工作的 asp.net 应用程序,并在尝试打开数据库连接而不是创建连接时开始出现此错误。

关闭 Visual Studio 并重新打开后,错误消失了。当我重新打开 Visual Studio 时,可能有关我的“ServerVersion”的某些内容已失效并重置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2021-01-21
    • 2016-04-11
    相关资源
    最近更新 更多