Wcf обработка исключений - PullRequest
       2

Wcf обработка исключений

5 голосов
/ 05 апреля 2010

Я заметил, что если вы, например, создаете новое исключение InvalidCastException, состояние канала на стороне клиента будет ошибочным. Но если вы выбросите новое исключение FaultException, состояние канала на стороне клиента будет открыто.

Из любопытства, что является причиной того, что один отказывает каналу, а другой нет?

1 Ответ

12 голосов
/ 05 апреля 2010

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

Другие исключения на самом деле не переводимы в мире WS. Исключения представляют собой абстракции, зависящие от технологии, и каждый технологический стек имеет различное представление этой абстракции (или, в некоторых случаях, вообще никакого).

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

Однако, используя FaultException, это подразумевает, что у вас есть некоторое предвидение условий вокруг того, почему он был брошен, и независимо от того, был ли затронут основной канал или нет.

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