2012-02-27 17 views
5

में सही ढंग से पकड़ा नहीं गया है, मैं कुछ कस्टम FaultException बनाने की कोशिश कर रहा हूं। मैंने DataContract कक्षा CreateFault नामक कक्षा बनाई है।डब्ल्यूसीएफ कस्टम गलती अपवाद क्लाइंट

[DataContract] 
public class CreateFault 
{ 
    private string report; 

    public CreateFault(string message) 
    { 
     this.report = message; 
    } 

    [DataMember] 
    public string Message 
    { 
     get { return this.report; } 
     set { this.report = value; } 
    } 
} 

मैं फिर सेवा विधि में गलती फेंक रहा हूं।

IService1.cs

[OperationContract] 
[FaultContract(typeof(CreateFault))] 
void TestFaultException(); 

में और Service1.cs

public void TestFaultException() 
{ 
    throw new FaultException<CreateFault>(new CreateFault("CreateFault message"), "Message abt exception"); 
} 

में मैं अपने ग्राहक में FaultException पकड़ने।

private void btnTest_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(); 
     client.TestFaultException(); 
    } 
    catch (FaultException<CreateFault> ex) 
    { 
     MessageBox.Show(ex.Detail.Message, "Success", MessageBoxButton.OK, MessageBoxImage.Error); 
    } 
    catch (FaultException ex) 
    { 
     MessageBox.Show(ex.Message, "Failure", MessageBoxButton.OK, MessageBoxImage.Error); 
    } 
    catch (Exception ex) 
    { 
    } 
} 

अब समस्या आती है। जब मैं विजुअल स्टूडियो 2010 में डब्ल्यूसीएफ सेवा अनुप्रयोग प्रोजेक्ट बनाता हूं तो यह अपेक्षा की तरह काम करता है। त्रुटि में फंस जाता है:

catch (FaultException<CreateFault> ex) 

लेकिन जब मैं अपने कस्टम FaultExceptions के साथ एक WCF सेवा लाइब्रेरी प्रोजेक्ट बनाने के ग्राहक अपने कस्टम अपवाद नहीं पहचानता है। इसके बजाय इसमें त्रुटि होती है:

catch (FaultException ex) 

यह डब्ल्यूसीएफ सेवा आवेदन परियोजना के साथ क्यों काम नहीं करता है?

संपादित करें: यह डिबगिंग जब यह

catch (FaultException ex) 

(? टाइप किया तत्काल विंडो में पूर्व)

में अपवाद पकड़ता दौरान मैं क्या मिलता है { "संदेश अपवाद abt"}

[System.ServiceModel.FaultException<WpfApplication1.ServiceReference2.CreateFault>]: {"Message abt exception"} 
base {System.ServiceModel.CommunicationException}: {"Message abt exception"} 
Action: "http://tempuri.org/IService1/TestFaultExceptionCreateFaultFault" 
Code: {System.ServiceModel.FaultCode} 
Message: "Message abt exception" 
Reason: {Message abt exception} 

संपादित 2:

समस्या मिली। मेरे पास दो सेवा संदर्भ थे जिनके पास CreateFault DataContract था। और जब मैं प्रोग्राम चलाता था तो यह गलत इस्तेमाल कर रहा था।

जब मैं

catch (FaultException<ServiceReference2.CreateFault> ex) 

करने के लिए बदल यह

+0

काम करके सभी खातों यह अपवाद को पकड़ने चाहिए। क्या आप जांच सकते हैं कि कैच अपवाद एक सामान्य "FaultException " या बस "FaultException" है। – Coder

+0

यह तब होता है जब मैं तत्काल विंडो में टाइप करता हूं? पूर्व {"संदेश अपवाद अपवाद"} [सिस्टम.ServiceModel.FaultException ]: {"संदेश abt अपवाद"} आधार { System.ServiceModel।CommunicationException}: { "अपवाद abt संदेश"} कार्रवाई: "http://tempuri.org/IService1/TestFaultExceptionCreateFaultFault" कोड: {} System.ServiceModel.FaultCode संदेश: कारण "abt अपवाद संदेश": {संदेश abt अपवाद} –

+0

समस्या मिली। मेरे पास दो सेवा संदर्भ थे जिनके पास CreateFault DataContract था। और जब मैं प्रोग्राम चलाता था तो यह गलत इस्तेमाल कर रहा था। जब मैं पकड़ (FaultException पूर्व) यह –

उत्तर

4

समस्या मिले काम किया। मेरे पास दो सेवा संदर्भ थे जिनके पास CreateFault DataContract था। और जब मैं प्रोग्राम चलाता था तो यह गलत इस्तेमाल कर रहा था।

जब मैं

catch (FaultException<ServiceReference2.CreateFault> ex) 

करने के लिए बदल यह

संबंधित मुद्दे