我正在开发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);
我无法找出原因。堆栈跟踪也不起作用。
任何帮助?
答案 0 :(得分:0)
您的连接在使用声明中。您不必显式调用connection.Close()。 http://msdn.microsoft.com/en-us/library/haa3afyz%28v=vs.110%29.aspx