Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Konzumacija deklarisanog faulta u WCFu (koji stize sa non-WCF servera)

[es] :: .NET :: Konzumacija deklarisanog faulta u WCFu (koji stize sa non-WCF servera)

[ Pregleda: 1293 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Konzumacija deklarisanog faulta u WCFu (koji stize sa non-WCF servera)07.12.2011. u 12:35 - pre 150 meseci
Ne lezi vraze, sad sam se ja zakucao sa WCF-non-WCF problemom a ne vidim od sume drvo. mozda je resenje abs ocigledno.

Dakle,

imam non-WCF server koji pozivam iz WCF klijenta i treba mi pristup fault u slucaju da ga server vrati. Mogu da koristim primer sa SO: "How to access SOAP 1.1 fault detail from WCF client (no fault contract)" ali taj nacin mi je zesce mucenje sa obzirom na to da WSDL definise fault contract:

Code (xml):

    <wsdl:types>
        <schema elementFormDefault="qualified" targetNamespace="http://www.cisco.com/BTS10200/i01" xmlns="http://www.w3.org/2001/XMLSchema">
            ...
            <complexType name="BtsSoapException">
                <sequence>
                    <element name="error_code" type="xsd:int"/>
                    <element name="error_string" nillable="true" type="xsd:string"/>
                </sequence>
            </complexType>
            <element name="fault" type="impl:BtsSoapException"/>
    ...

    <wsdl:message name="BtsSoapException">
        <wsdl:part element="impl:fault" name="fault"/>
    </wsdl:message>
    ...

    <wsdl:portType name="Bts10200Operations">
        <wsdl:operation name="login">
            <wsdl:input message="impl:loginRequest" name="loginRequest"/>
            <wsdl:output message="impl:loginResponse" name="loginResponse"/>
            <wsdl:fault message="impl:BtsSoapException" name="BtsSoapException"/>
        </wsdl:operation>
    ...
 


Import servisa generise odgovarajuce konstrukte:

Code (csharp):

    [System.Runtime.Serialization.DataContractAttribute(Name="BtsSoapException", Namespace="http://www.cisco.com/BTS10200/i01")]
    [System.SerializableAttribute()]
    public partial class BtsSoapException : object ...

    ....

    [System.ServiceModel.ServiceContractAttribute(Namespace="http://www.cisco.com/BTS10200/i01", ConfigurationName="CiscoBTSService.Bts10200Operations")]
    public interface Bts10200Operations {
        [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
        [System.ServiceModel.FaultContractAttribute(typeof(TestCiscoBTS.CiscoBTSService.BtsSoapException), Action="", Name="fault")]
        TestCiscoBTS.CiscoBTSService.loginResponse login(TestCiscoBTS.CiscoBTSService.loginRequest request);
    ...
 


kad pozovem login() sa pogresnim userom dobijem soap fault u raw odgovoru:

Code (xml):

     <?xml version="1.0" encoding="utf-8"?>
     <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <soapenv:Body>
               <soapenv:Fault>
                    <faultcode>soapenv:Server.generalException</faultcode>
                    <faultstring></faultstring>
                    <detail>
                         <ns1:fault xmlns:ns1="http://www.cisco.com/BTS10200/i01">
                              <error_code>401</error_code>
                              <error_string xsi:type="xsd:string">java.lang.Exception: No user profile defined in the database for fakeuser</error_string>
                         </ns1:fault>
                         <ns2:exceptionName xmlns:ns2="http://xml.apache.org/axis/">com.sswitch.oam.soap.intf.BtsSoapException</ns2:exceptionName>
                         <ns3:stackTrace xmlns:ns3="http://xml.apache.org/axis/">
          at com.sswitch.oam.soap.impl.UserAuth.validateUser(UserAuth.java:63)
          ...
 


I FaultException se digne kao sto treba, ali nije FaultException<BtsSoapException>?!? Kao da WCF uopste ne prepoznaje fault i ne deserijalizuje ga. Sta radim pogresno? Kako da umesto FaultException dobijem FaultException<BtsSoapException>

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: Konzumacija deklarisanog faulta u WCFu (koji stize sa non-WCF servera)

[ Pregleda: 1293 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.