Używam wywołań asynchronicznych WCF w moim projekcie i używam metod asynchronicznych po stronie klienta. Mam scenariusz jak poniżej -Jak rzucić wyjątek od wywołania zwrotnego w WCF Async przy użyciu IAsyncResult
//Code in Business Layer and this method is called from Web layer
private void GetGeneralNews()
{
client.BeginGetGeneralNewsFeed(GeneralNewsCallback, null);
}
//Call Back Method
private static void GeneralNewsCallback(IAsyncResult asyncResult)
{
string response = string.Empty;
try
{
response = client.EndGetGeneralNewsFeed(asyncResult);
}
catch(Exception ex)
{
throw ex; // Here is the problem. It does not throw the exception to the web layer instead it will suppress the error.
}
}
Tak jak pokazano w powyższym fragmencie kodu nie rzucać wyjątek od warstwy biznesowej do warstwy internetowej, jak to będzie tłumione tutaj w samej warstwie biznesowej.
Sprawdziłem niektóre blogi i witryny, które sugerują, aby przejść do asynchronizacji i oczekują na podejście, ponieważ mam framework .NET 4.0 i widzę "" Opcja "Operacje oparte na zadaniach" została wyłączona. Więc jeśli są jakieś opcje przy użyciu "IAsyncResult" (Begin & Koniec po stronie klienta), proszę dać mi znać. Jeśli są inne podejścia, również mile widziane.
Uprzejmie, proszę, pomóż mi.
Dzięki.
Sprawdź, czy link może być pomocny http://blogs.msdn.com/b/nikos/archive/2011/03/14/how-to-implement-iasyncresult-in-another-way.aspx#comments – reapen
mówisz, że twój blok "catch" nie wychwytuje żadnego wyjątku? Jeśli nieobsługiwany wyjątek zostanie zgłoszony w kodzie po stronie serwera, powyższy blok 'catch' powinien domyślnie przechwycić wyjątek" FaultException ". –
A więc chcesz, aby wyjątek zadzwonił do dzwoniącego, gdy dzwoni do "GetGeneralNews"? – usr