Возьмите следующую попытку поймать-заявление в WCF-Service
SoapException Не Пойманный в попытке поймать
Try
'Here some method is being called.
Return myBs.PerformDailyUpdate()
Catch ex As Exception 'Exception is not being caught here
If service IsNot Nothing AndAlso service.HasWarnings Then
TextFileTracer.Write(String.Format("Warning in method: '{0}'.", name))
TextFileTracer.Write(service.GetWarnings)
End If
Try
TextFileTracer.Write("Error in dbmanager: " & service.HasErrors.ToString)
Catch ex2 As Exception
End Try
TextFileTracer.Write(String.Format("Error in method: '{0}'.", name))
TextFileTracer.Write(ex.Message & vbCrLf & ex.StackTrace)
End Try
End Function 'Exception shows here while debugging
В этом методе (PerformDailyUpdate
) ASMX-Webservice (.Net 2.0)
вызывается. Этот веб-сервис вызывает случайный код SOAPException
, вызванный вызовом метода из этого webservice.yet каким-то образом это исключение SOAPException не обнаружено методом выше.
Мой вопрос: Почему не исключение SOAPException? Существуют ли какие-то характеристики, которые разделяют SOAP-Исключение из обычных «исключений», генерируемых (что, в свою очередь, не может быть уловлено)?
Примечание: Код, написанный здесь, не мой. Поэтому, пожалуйста, не судите меня на этом
ExceptionMessage (первая часть)
System.Web.Services.Protocols.SoapException: Unexpected application error: SqlException.
ADF.ExceptionHandling.GlobalExceptions.UnexpectedException: Unexpected application error: SqlException.
System.Data.SqlClient.SqlException: Incorrect syntax near ')'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
....
Благодаря
Scheme (how this clarifies the situation somewhat):
Internal DailyTriggerMechanism -----> WCF - Service -----> ASMX-Webservice ----> DB2/SQL
(Origin code above) (Exception being thrown)
Внутри WCF-службы на данные ПОЛУЧАЛ манипулируют для заполнения конкретных таблиц , В этой ситуации AMSX-Webservice не может измениться.
Является ли это случай, когда ошибка SOAP происходит на хосте, но вы пытаетесь поймать его на клиенте? Трудно сказать из описания. – Brian
Я редактирую свой пост, чтобы прояснить ситуацию. – User999999
Прежде всего, если вы используете ссылку на службу (и вы _should_), вы получите 'FaultException' или, может быть,' FaultException ', а не' SoapException'. Во-вторых, если 'catch (Exception ex)' не поймает исключение, то это означает, что исключение не было выбрано. –