WCF - 基础连接已关闭:接收时发生意外错误

时间:2015-01-11 08:09:55

标签: asp.net web-services wcf

我正在开发WCF服务。我有一个方法在从数据库查询后返回一个对象。

目前我遇到了问题,如果用户对象填充了数据,则Web服务会返回正确的json响应。但是,如果未使用来自数据库的数据初始化用户对象(特定ID不存在数据)。我收到了以下错误。

"The underlying connection was closed: An unexpected error occurred on a receive."

现有代码:

    public static User GetUserById(int userId, string dbConnection)
    {
        var userClass =  new User();
        using (var connection = new SqlConnection(dbConnection))
        {
            connection.Open();
            var sqlCommand = new SqlCommand("GetUserById", connection);

            sqlCommand.Parameters.Add(new SqlParameter("@UserId", SqlDbType.Int));
            sqlCommand.Parameters["@UserId"].Value = userId;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            var reader = sqlCommand.ExecuteReader();
            while (reader.Read())
            {
                userClass = FillUserObject(reader);

            }
            connection.Close();
            reader.Close();
        }
        return userClass;
    }


    [OperationContract]
    [WebGet(UriTemplate = "GetUserById?userId={userId}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
    User GetUserById(int userId);

我无法找出原因。堆栈跟踪也不起作用。

任何帮助?

1 个答案:

答案 0 :(得分:0)

您的连接在使用声明中。您不必显式调用connection.Close()。 http://msdn.microsoft.com/en-us/library/haa3afyz%28v=vs.110%29.aspx