Я делаю вызов Async от клиента к службе WCF. Служба выбрасывает исключение FaultException. Когда я поймаю исключение в обработчике событий «Завершено» моего клиента, он получает исключение, но теряет всю информацию об этом. Все, что я получаю, это общий тип Exception с этим сообщением об ошибке: «CommunicationException: удаленный сервер возвратил ошибку: NotFound»). У меня естьExceptionDetailInFaults установлено значение true.WCF Throws FaultException, клиент ловит Исключение, но теряет всю информацию
Почему я не могу поймать исключение FaultException?
Благодарим за помощь.
Здесь уместна код:
службы WCF код
[WebMethod]
[FaultContract(typeof(DivideByZeroException))]
public int CountResults(FilterArgs args)
{
...
DivideByZeroException divByZero = new DivideByZeroException();
throw new FaultException<DivideByZeroException>(divByZero);
Клиентский код
void seasClient_CountResultsCompleted(object sender, CountResultsCompletedEventArgs e)
{
try
{
...
}
catch (FaultException ex)
{
MessageBox.Show("FaultException" + ex.Message);
}
catch (TimeoutException ex)
{
MessageBox.Show("TimeoutException" + ex.Message);
}
catch (CommunicationException ex)
{
MessageBox.Show("CommunicationException" + ex.Message);
}
catch (Exception ex)
{
MessageBox.Show("Exception" + ex.Message);
}
и мой e.Error.ToString сообщение():
System.ServiceModel.CommunicationException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)
--- End of inner exception stack trace ---
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
--- End of inner exception stack trace ---
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
at WebAnalysis.SeasService.SeasServiceSoapClient.SeasServiceSoapClientChannel.EndCountResults(IAsyncResult result)
at WebAnalysis.SeasService.SeasServiceSoapClient.WebAnalysis.SeasService.SeasServiceSoap.EndCountResults(IAsyncResult result)
at WebAnalysis.SeasService.SeasServiceSoapClient.EndCountResults(IAsyncResult result)
at WebAnalysis.SeasService.SeasServiceSoapClient.OnEndCountResults(IAsyncResult result)
at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)
Спасибо, Джон. Я, очевидно, новичок, и я унаследовал этот код. – mschu