бросить исключение из WCF - PullRequest
4 голосов
/ 17 марта 2011


Я пытаюсь выбросить исключение из модуля WCF в клиентский модуль. Я получаю следующую ошибку «FaultException не обработан пользователем»

на стороне обслуживания

public IList<UserEntity> SearchUserDetail(string userName)
{
    try
    {
        int y = 0;
        int u = 9 / y;
        return new UserViewModel().SearchUserDetail(userName);
    }
    catch (Exception ex)
    {
        throw new FaultException(
        new FaultReason(ex.Message),new FaultCode("Data Access Error"));
    }                 
}

на стороне клиента

try
{             
    ServiceReference.ServiceClient servRef = new ServiceReference.ServiceClient();

    List<UserEntity> users = new List<UserEntity>();
    users.AddRange(servRef.SearchUserDetail("Jacson"));
    dataGridView1.DataSource = users;            
}
catch (System.ServiceModel.FaultException  exc)
{
    Logging.Log(new Exception("Search User", exc));
}

В app.config модуля Сервис я добавил следующий атрибут

 serviceDebug includeExceptionDetailInFaults="True" 

Кто-нибудь знает решение?

Ответы [ 3 ]

4 голосов
/ 17 марта 2011

Необходимо добавить FaultContractAttribute к методу SearchUserDetail, если он имеет OperationContractAttribute и является частью вашего класса ServiceContract.

[ServiceContract]
interface IMyServiceContract
{
  [OperationContract]
  [FaultContract(typeof(...)]
  IList<UserEntity> SearchUserDetail(string userName)
}

Я не уверен насчет типа FaultContract. Но взгляните на MSDN.

3 голосов
/ 17 марта 2011
1 голос
/ 08 августа 2012

Я знаю, что опаздываю, но на тот случай, если кто-нибудь наткнется на это, у меня возникла та же ошибка, и в моем коде все было в порядке.

Оказывается, это произошло только в среде Visual Studio из-за некоторых параметров отладки. См. здесь для объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...