Я разрабатываю службу WCF. У меня есть метод, возвращающий один объект после запроса из базы данных.WCF - Основное соединение было закрыто: произошла непредвиденная ошибка при получении
В настоящее время я столкнулся с проблемой. Если пользовательский объект заполнен данными, веб-служба возвращает правильный ответ json. Но если пользовательский объект не инициализирован данными из базы данных (данных для конкретного идентификатора нет). Я получаю следующую ошибку.
"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);
Я не могу выяснить причину. Трассировка стека не работает.
Любая помощь?
Поскольку проблема возникает только в случае отсутствия данных, вам нужно показать нам свой метод 'FillUserObject (reader). Вы уже пытались отладить ваш сервис? – Filburt
Мой класс пользователя содержит один объект datetime. Если я не передаю значение в этом объекте, я получаю эту неожиданную ошибку закрытия. –
Итак, вы, вероятно, могли бы решить эту проблему с помощью NULL DateTime? – Filburt