asp.net 2.0 a c# - 1256
ASP.NET 2.0 a C# - tvorba dynamických stránek profesionálně soap:Server System.Web.Services.Protocols.SoapException: Server was unable to process request. —> System.Data.SqlClient SqlException: S L Server does not exist or access Q denied. at ...
12 59
Element Fault obecné obsahuje elementy , a . Elementu je přiřazena jedna z těchto předdefinovaných hodnot - ClientFaultCode (vyskytl se problém s klientským požadavkem SOAP), MustUnderstandFaultCode (požadovaná část S A zprávy nebyla rozpoznána), SerOP verFaultCode (na serveru se vyskytla chyba) a VersionMismatchFaultCode (byl nalezen neplatný jmenný prostor). Element pak obsahuje úplný popis problému. Nepovinný element můžete použít k uložení doplňkových informací o chybě, která se vyskytla (ačkoli v našem příkladu je tento element prázdný). Problém je v tom, že element není mapován přímo do třídy výjimek .NET. Když proxy obdrží tuto zprávu, nedokáže identifikovat objekt původní výjimky a nedokáže ani zjistit, zda je třída výjimky u klienta vůbec k dispozici. Výsledkem je, že třída proxy jednoduše zavolá obecnou SoapException s úplnými údaji ve formé elementu . Abyste pochopili, jak to funguje, zamyslete se nad tím, co se stane, napíšete-li u vašeho klienta následující kód: EmployeesService proxy = new EmployeesServiceO; int count = - 1 ; try { count = proxy.GetEmployeesCount(); } catch (SqlException err) { ... } V tomto případě nebude výjimka nikdy zachycena, protože se jedná o SoapException, nikoliv o SqlException (ačkoli základní příčinou problému a současné původním objektem výjimky je SqlException). 1 když zachytí¬ te SqlException ve webové metodě a ručně zavoláte odlišný objekt výjimky, stejně bude u klienta překonvertován na SoapException. Pro klienta je proto dost obtížné odlišovat jednotlivé typy chybových stavů. Klient dokáže zachytit pouze System.Net.WebException (která představuje uplynutí časové prodlevy nebo obecný problém sítě) nebo System.Web.Services.Protocols.SoapF.xception (která představuje jakoukoliv výjimku .NET, která se vyskytla ve webové službě). Máte ovšem ještě jednu možnost. Výjimku webové metody můžete zachytit na straně serveru, a pak může¬ te sami zavolat podporovanou SoapException. Výhoda tohoto přístupu spočívá v tom, že než vaše webová služba zavolá objekt SoapException, můžete jej nakonfigurovat vložením dodatečného XMI. do elementu . Klient si poté může přečíst obsah této značky a programově rozhodnout, co se ve skutečnosti stalo.
- Pro možnost psaní komentářů se přihlašte nebo zaregistrujte.


































































