Выдает исключение в работе службы WCF, что-нибудь, чтобы посмотреть? - PullRequest
0 голосов
/ 06 декабря 2011

Я только изучаю WCF и написал службу Windows, на которой размещается служба WCF. С тех пор, как я запустил его в service.msc на удаленном сервере (физически удаленном и очень медленном), я думаю, что уже исправил сотни ошибок здесь и там уже. Теперь я наконец застрял.

На данный момент я включил трассировку и ведение журнала сообщений. Первый и единственный вызов функции выглядит так:

[OperationContract]
public MyServiceResponse ConnectToAXDynamicsViaDotNET2BusinessConnectorWithSadFace()
{
    try
    {
        throw new NotImplemented();
    }
    catch(Exception ex)
    {
         return new MyServiceResponse(ex, ex.Message);
    }
}

[DataContract]
public class MyServiceResponse
{
     // ...
}

После вызова операции клиент просто сидит и ждет до истечения времени ожидания. Проверяя трассировку, он записывает мое выброшенное исключение. Поэтому меня интересует, блокирует ли там WCF и игнорирует ли мое предложение catch.

Затем я проверил просто возвращаемое значение без броска, и оно НАКОНЕЦ работает.

У меня вопрос, как тогда я могу заставить работать вышеописанный сценарий, т.е. поймать исключение и вернуть разумный результат клиенту? Может быть, это просто трассировка, которая блокирует меня, но я хочу включить трассировку во время всего этого процесса отладки, иначе действительно сложно работать.

Спасибо за вашу драгоценную помощь!

РЕДАКТИРОВАТЬ : Извините, я нашел это сразу после того, как опубликовал этот вопрос. Бывает все время: http://msdn.microsoft.com/en-us/library/ee942778.aspx но я еще не прочитал его, так как сейчас мне нужно бежать. Не уверен, что это решит мою проблему.

1 Ответ

0 голосов
/ 07 декабря 2011

Риск быть опровергнут, но только ради документации и общей полезности вопроса:

Читая статьи по обработке FaultException, я догадываюсь , что описанное выше поведение связано с тем, что класс исключения несериализации.И служба автоматически отключается, не возвращая никаких сообщений об ошибках, даже если включена функция «отправить (неизвестные) ошибки клиенту».Что касается того, почему это так, я понятия не имею.Будет обновляться, если я узнаю больше.

Я с тех пор изменился, чтобы выдать новый FaultException () вместо того, чтобы возвращать мои собственные MyServiceResponses.

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