#wcf #microsoft-sync-framework
#wcf #microsoft-sync-framework
Вопрос:
Я использую WCF и Sync Framework для синхронизации данных между SQL 2008 и SQL Ce 3.5. Я хотел бы отправлять клиенту только хорошо сформированные пользовательские ошибки, если что-то пойдет не так на сервере. Однако проблема, с которой я сталкиваюсь, заключается в том, что когда один из методов Sync Framework является источником ошибки, моя ошибка оборачивается общим «Исключением, вызванным целью вызова», и возвращается клиенту с пользовательской ошибкой в качестве внутреннего исключения. Таким образом, клиент должен перехватить ошибку как общее исключение, а затем обработать внутреннее исключение.
Как я могу удалить исключение оболочки и просто показать реальную ошибку потребителю моей службы?
Ответ №1:
Подключите пользовательский обработчик ошибок IErrorHandler для преобразования исключений.
Комментарии:
1. У меня не возникает проблем с получением ошибок, возникающих в явно вызываемых методах WCF, для возврата клиенту правильно сформированных пользовательских ошибок. Проблема заключается в том, что эти методы WCF вызываются из Sync Framework. Sync Framework перезаписывается по моей вине после выполнения кода обработчика ошибок WCF, поэтому клиент видит только ошибки, обернутые в ошибку rethrown. Это поведение, которого я пытаюсь избежать.
2. Возможно, вам потребуется подключиться к событиям MSF, чтобы перехватить исключение и обработать его по-разному в MSF. Существует конфигурация, которую вы можете настроить на наличие записей трассировки вывода MSF, чтобы также помочь вам выявить проблемы.
3. Рори, спасибо за комментарий, это помогло. В конце концов, я смог обернуть вызов для синхронизации в SyncAgent и удалить FaultException и передать его только клиентскому приложению.