Ошибка FaultException при вызове веб-службы
Я создал веб-сервис, который возвращает некоторые категории из базы данных. Если я проверяю с клиентом, что WCF предлагает все идеально. Я начал строить клиента. Я добавил сервисную ссылку в свой сервис http://localhost/Transaction/transaction.svc
, Я создаю новый экземпляр клиентского веб-сервиса
TransactionClient tc = new TransactionClient("BasicHttpEndpoint");
Category[] availableCategories = tc.GetAllCategories();
я получил Object reference not set to an instance of an object
на второй строке кода. Имя конечной точки правильное.
Есть идеи, почему ошибка?
PS: если вам нужно больше кода, пожалуйста, дайте мне знать, что писать. Заранее спасибо.
Редактировать:
[OperationContract]
List<Category> GetAllCategories();
Implementation :
public List<Category> GetAllCategories()
{ return db.GetAllCategories()}
Сервис работает, когда я тестирую с WCFClient, поэтому остальная часть моего кода должна быть corect.
Это код, который получает мне предметы из базы данных. Я пытаюсь опубликовать решение, но приложение не остановилось.
List<Category> response = new List<Category>();
connect();
SqlCommand cmd = new SqlCommand("select id_category, name from tbl_category", conn);
try
{
dr = cmd.ExecuteReader();
while (dr.Read())
{
Category new_category = new Category();
new_category.id_category = int.Parse(dr["id_category"].ToString());
new_category.name = dr["name"].ToString();
response.Add(new_category);
}
}
catch (SqlException ex)
{
Console.Out.Write(ex.ToString());
}
finally
{
dr.Close();
conn.Close();
}
return response;
1 ответ
FaultException
исключение, переданное с другой стороны канала WCF. Это означает, что исключение не произошло на линии, которую вы называете tc.GetAllCategories();
, но на стороне сервера, в обработке этого метода.
FaultException
исключение обертки, которое произошло на стороне сервера. Из того, что мы можем видеть в том, что вы вставили, это NullReferenceException
, Чтобы найти точное место, где это происходит, установите точку останова в GetAllCategories
метод и шаг через это, пока это не терпит неудачу. Поскольку это служба WCF, исключение при обработке вызова метода не приводит к сбою службы, но оборачивает исключение и отправляет его обратно клиенту.
Другой способ найти место возникновения ошибки - отладка службы, откройте "Отладка -> Исключения" в Visual Studio и установите флажок в столбце "Брошенный" рядом с " Исключениями времени выполнения общего языка". Это говорит отладчику VS остановить выполнение при возникновении ошибки, даже если исключение будет перехвачено WCF.