1 / 10

Haladó Programozás

Haladó Programozás. WCF kivételkezelés. Haladó Programozás. Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése. Kivételkezelés WCF-ben. Ha nem kezeljük a hibákat, akkor azok a szerverről a kliensre kerülnek. A kliens futása leáll a következő hibaüzenettel:

tacy
Download Presentation

Haladó Programozás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Haladó Programozás WCF kivételkezelés OE-NIK HP

  2. Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése OE-NIK HP

  3. Kivételkezelés WCF-ben • Ha nem kezeljük a hibákat, akkor azok a szerverről a kliensre kerülnek. A kliens futása leáll a következő hibaüzenettel: • CommunicationException - the server did not provide a meaningful reply; this might have been caused due to a contract mismatch, a premature session shutdown or an internal server error. • Egy ilyen után a kommunikációs csatorna nem használható tovább. • A kommunikációs csatorna fenntartásához a SOAP-nak megfelelő kivételkezelést kell alkalmazni. Ennek lehetőségei: • returnUnknownExceptionsAsFaults / [ServiceBehavior(IncludeExceptionDetailInFaults=true)]: Minden kivétel becsomagolódik és mint Soap Fault átkerül a kliensre. • Érzékeny adatokat is átküld, így csak debugolásnál ajánlott használni • IErrorHandler • Minden kivételt elkapunk a szerveren, naplózzuk és esetleg továbbdobjuk Fault Exception-ként • FaultException (ezt használjuk a továbbiakban) OE-NIK HP

  4. SOAP Fault • A SOAP-ban definiált hibával kapcsolatos mezők: • faultcode: kötelező, karakterlánc általában a hibakódok egyikével kezdődik: • Server: a hiba a szerverben volt, az üzenet újbóli elküldése sikerre vezethet • Client: a hiba az üzenet tartalmában vagy formátumában van, nem érdemes újra próbálkozni • faultstring: olvasható formában írja le a hiba okát • faultactor: tájékoztat, hogy hol következett be a hiba az üzenet útja során • A FaultException a WCF-ben definiált típus a Soap Fault létrehozására • Bármilyen objektum becsomagolható ezzel Soap Faulttá • new FaultException<MyFaultException>(myfe,faultReason,faultCode); • myfe: becsomagolandó objektum • faultReason: további információ küldése a kivételről • faultCode: megfelel a SOAP feultcode mezőjének OE-NIK HP

  5. Kivételkezelési információk a szerződésben • A WCF szerződésnek tartalmaznia kell a kivételkezelésre vonatkozó információkat • [OperationContract][FaultContract(typeof(BMIFaultException))]double GetBMI(double weight, double height); • Ha a szerződés nem tartalmazza a FaultContract információt, akkor a kliens mindent unknowfaultexceptions kivételként kap el • A FaultContract információ megjelenik a szolgáltatás wsdl-jében • Saját objektumot érdemes átdobni, hogy a megfelelő adatokat adjuk át • A átdobandó objektum osztályát a szerződésben definiáljuk • [DataContract]public class BMIFaultException{ [DataMember] public string Message{get;set;}} OE-NIK HP

  6. Kivétel dobása és elkapása • A saját objektum létrehozása utána • A FaultException generikus osztályból hozunk létre egy példányt • Érdemes megadni a faultreasont és a faultcode-ot is • BMIFaultException error = new BMIFaultException();error.Message = "Zero value passed for height“;throw new FaultException<BMIFaultException>( error, new FaultReason(ex.StackTrace), new FaultCode("Client.DivideByZero")); • A kivétel elkapása a szokásos módon történik • catch (System.ServiceModel.FaultException< BMIServiceReference.BMIFaultException> fex) OE-NIK HP

  7. Feladat • Készítsünk webszolgáltatást, amely a testtömegindexet (Body Mass Index) adja meg a súly és a testmagasság alapján • BMI=súly/magasság/magasság (súly kilogramban, magasság méterben) • Dobjon a szerver kivételt, ha a magasság kisebb, mint 0,5 m vagy nagyobb mint 2,5 m. • Dobjuk át a kivételt, amit nullával való osztáskor kapunk. • Minden egyéb kivételnek dobjuk át az üzenetét a kliensnek. • A kliens kezelje az átdobott kivételeket. OE-NIK HP

  8. Irodalomjegyzék • http://www.extremeexperts.com/Net/Articles/ExceptionHandlingInWCF.aspx • http://www.c-sharpcorner.com/uploadfile/ankithakur/exception-handling-in-wcf-using-fault-contract/ • http://blogs.msdn.com/b/brajens/archive/2007/04/23/exception-handling-in-wcf-web-service.aspx OE-NIK HP

  9. OE-NIK HP

  10. OE-NIK HP

More Related