Вопрос по c#, web-services, wcf – Какие исключения может генерировать сгенерированная ссылка на сервис?

9

Я добавил веб-службу в Visual Studio 2010 с помощью & quot; Добавить ссылку на службу ... & quot ;. Это генерирует некоторый код в файле с именемReference.cs, Теперь, если я вызову один из методов, я хочу знать, какие исключения может вызвать метод. Предположительно он может генерировать исключения, связанные с сетью, такие какSocketException или жеIOException?

Обычные методы в .NET могут быть проверены в msdn или в исходном коде, чтобы показать, какие исключения могут быть выброшены, как, например,File.Open, Здесь ясно, какие исключения я должен перехватывать и перебрасывать, чтобы показать сообщения об ошибках на более позднем этапе.

For those generated methods, how can I know what exceptions they may throw?

спасибо за ссылку. Я знаю, как различать исключения, которые должны быть перехвачены, и исключения, которые должны пузыриться - отсюда и этот вопрос. Однако в сгенерированном коде нет никаких /// & lt; исключений & gt; тег или что-нибудь, намекающее на то, какие исключения могут быть выброшены. vidstige
Проверьте следующее [Тема] [1] [1]:stackoverflow.com/questions/264747/… Tomtom

Ваш Ответ

1   ответ
14

исключения (те, которые определены какFaultContacts разработчиком услуги и указана в договоре на обслуживание).

В первом случае ваши проблемы, я полагаю,CommunicationException а такжеTimeoutException; это документированные возможные исключения дляICommunicationObject.BeginOpen и другие "открытия" методыICommunicationObject (основа модели). CommunicationObjectFaultedException задокументировано для «закрытия»; методы. Существует такжеQuotaExceededException для методов, которые отправляют сообщения, такие какIRequestChannel.Request, Средиеще много чего может бытьэто должно быть обнаружено.

Стоит отметить, из статьи MSDN, указанной выше, это:

All exceptions thrown by channels must be either a System.TimeoutException, System.ServiceModel.CommunicationException, or a type derived from CommunicationException. (Exceptions such as ObjectDisposedException may also be thrown, but only to indicate that the calling code has misused the channel. If a channel is used correctly, it must only throw the given exceptions.)

Затем существуют «Неисправности», которые представляют собой исключения, возникающие на стороне службы и (потенциально, если они включены) детализируются для вызывающей стороны, после чего вызывающая сторона может обработать это или выдать соответствующее исключение на стороне клиента:

When generating a fault, the custom channel should not send the fault directly, rather, it should throw an exception and let the layer above decide whether to convert that exception to a fault and how to send it.

КаналState предлагает событиеFaulted на который вы можете подписаться, чтобы получать информацию, когда такого состояния он достиг, и, возможно, действовать. По умолчанию (без настройки подавления (?)) Ошибки будут отображаться как управляемые исключения; еще раз, чтобы повторить:

In WCF clients, SOAP faults that occur during communication that are of interest to client applications are raised as managed exceptions. While there are many exceptions that can occur during the execution of any program, applications using the WCF client programming model can expect to handle exceptions of the [...] two types as a result of communication.

А такжеэто относится снова кCommunicationException а такжеTimeoutException упомянутое выше.

Наконец, на данный момент, по крайней мере, неожиданное:

FaultException exceptions are thrown when a listener receives a fault that is not expected or specified in the operation contract; usually this occurs when the application is being debugged and the service has the System.ServiceModel.Description.ServiceDebugBehavior.IncludeExceptionDetailInFaults property set to true.

Error: User Rate Limit Exceeded vidstige

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