Как обработать низкий уровень ошибки WCF?

Математика необходима для разработчиков в некоторых полях, но почти бесполезна в других.

, Если Вы - разработчик игр и должны работать с физикой много - понимание математики крайне важно. Если Вы работаете с усовершенствованными визуальными средствами управления - Вы не могли бы сделать многого без геометрии. Если бы Вы планируете сделать некоторые финансовые вычисления - это ДЕЙСТВИТЕЛЬНО помогло бы иметь основательное знание статистики.

, С другой стороны, за прошлые 5 лет у меня было только 2 или 3 проекта, где ЛЮБАЯ сумма математики требовалась вообще. Из них было только 1 возникновение, когда поиск Google не помог.

В конце дня даже финансовые вычисления - очень часто что-то, что Ваши клиенты делают для Вас и дают Вам формулы для реализации.

Поэтому, если Вы находитесь в 'прикладном программном обеспечении' бизнес, Вы, вероятно, никогда не будете использовать свой математический градус. Если Вы находитесь в академической математике программного обеспечения, крайне важны.

7
задан Sylvain 22 September 2009 в 02:18
поделиться

4 ответа

После многих исследований и экспериментов ответ:

в это время (.NET 3.5) нет механизма, который не существует Позволяет обрабатывать все возможные исключения, которые могут возникнуть в контексте вызова WCF.

Исключения, которые случаются во время выполнения метода службы, можно легко обрабатывать с помощью:

  1. Попробуйте / Catch Block во всех методах обслуживания для обработки ожидаемых случаев.
  2. IERRORHANDLER подключил к службам для решения неожиданных ошибок во время выполнения службы.

Однако для ошибок инфраструктуры с низким уровнем WCF нет идеального решения. Наилучшее решение, которое существует, кажется, для реализации пользовательского канала для достижения большего количества исключений.

В Этот отчет об ошибках Microsoft Connect , Microsoft подтверждает, что нет способа обрабатывать все типы ошибок инфраструктуры WCF.

В эта нить на форумах Microsoft WCF , есть образец о том, как реализовать пользовательский канал. Этот раствор работает только для HTTP, а не для HTTPS. Также некоторые ошибки инфраструктуры WCF не попадают на заказ канал (см. Более подробную информацию в этом конкретном потоке).

5
ответ дан 7 December 2019 в 07:48
поделиться

Используйте FaultContracts. Затем неисправность может быть устранена на стороне клиента.

http://msdn.microsoft.com/en-us/library/ms732013.aspx

http://www.c-sharpcorner.com/UploadFile/ankithakur/ExceptionHandlingWCF12282007072617AM/ExceptionHandlingWCF.aspx

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

На стороне клиента используйте блоки try / catch для перехвата всех исключений / ошибок. Определенно существуют ошибки, которые невозможно обнаружить на стороне сервера, например, проблемы со связью, поэтому вам в любом случае необходимо обрабатывать ошибки на стороне клиента.

Если вам нужна централизованная обработка ошибок, вы можете создать службу, которая принимает сообщения обо всех ошибках, отправьте ошибку на этот сервер и запишите ее.

2
ответ дан 7 December 2019 в 07:48
поделиться

Дело в том, что если сервер недоступен или не может обработать сообщение, на сервере не будет ошибки - ошибка появится на клиенте ("TimeoutException "или другие).

Таким образом, в этих случаях наличие IErrorHandler на сервере действительно не поможет - поскольку ошибка действительно происходит на клиенте (невозможно установить соединение из-за сбоя сети или опечатки на сервере адрес или подобные вещи).

Таким образом, на стороне клиента вам обязательно нужно использовать try .... перехватить все вызовы вашего сервера.

Marc

0
ответ дан 7 December 2019 в 07:48
поделиться

Настройте диагностическую трассировку и проверьте журналы с помощью Service Trace Viewer Tool . Ссылка также содержит информацию о настройке трассировки.

0
ответ дан 7 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: