2012-03-08 7 views
8

जब एक FaultException<CustomFault> इस तरह फेंक:डब्ल्यूसीएफ सेवाओं से एक FaultException <T> फेंकने का कारण बनता है 'इस गलती के निर्माता ने एक कारण निर्दिष्ट नहीं किया है।'

throw new FaultException<CustomFault>(new CustomFault("Custom fault message")); 

मैं निम्नलिखित मिल: "। इस गलती के निर्माता एक कारण निर्दिष्ट नहीं किया है" अब this MSDN article एक के अनुसार FaultReason

उपयोग करने के लिए आवश्यक नहीं है मैं निम्नलिखित सेवा अनुबंध है:

[OperationContract] 
[FaultContract(typeof(CustomFault))] 
CustomType[] SomeMethod(int someParameter); 

[DataContract] 
public class CustomFault 
{ 
    private string report; 

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

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

कि सुझाव है कि यह अन्य FaultReason उपयोग करने के लिए अनिवार्य है MSDN लेख पर एक टिप्पणी है , लेकिन कई अन्य स्थानों में मैंने लोगों को बहस करते हुए देखा है कि आपको FaultReason का उपयोग तब तक नहीं करना चाहिए जब तक आवश्यक हो।

तो मेरा प्रश्न इस प्रकार है; FaultReason का उपयोग करना वास्तव में अनिवार्य है और यदि नहीं - FaultException फेंकने का प्रयास करते समय मैंने उठाए गए अपवाद को कैसे रोक सकता हूं?

संपादित

नमूना परियोजना this article से मैं excact समान व्यवहार प्राप्त चलाकर। हो सकता है कि यह .NET में एक अद्यतन के कारण होता है जो दस्तावेज़/नमूने अद्यतन नहीं किया जा रहा है।

+0

जब भी मैंने डब्ल्यूसीएफ में 'FaultException ' फेंक दिया है, मैंने 'कारण' सेट नहीं किया है, और मुझे कोई समस्या नहीं है। खेद नहीं है कि यह आपके लिए क्यों काम नहीं कर रहा है, क्षमा करें। – AakashM

+0

क्या आप अपवाद प्राप्त करते हैं जब आप वीएस डीबगर संलग्न किए बिना अपनी सेवा का आह्वान करते हैं? –

+0

नहीं मैं नहीं करता हूं। शायद यह डीबगर में अनचाहे अपवाद स्तर का सिर्फ एक प्रश्न है। लेकिन यह मेरे लिए गलत लगता है कि दस्तावेज एक गलती हैंडलिंग रणनीति का उपयोग कर रहा है जो अपवाद का कारण बनता है :( –

उत्तर

9

गलती कारण आवश्यक है जबकि विवरण वैकल्पिक हैं।

faultstring
faultstring तत्व एक मानव पठनीय विवरण प्रदान करने का इरादा है:

WCF सोप दोष है, जो the SOAP specification के लिए आवश्यक है की <faultstring> तत्व को भरने के लिए FaultException.Reason संपत्ति के मूल्य का उपयोग करता है गलती का और एल्गोरिदमिक प्रसंस्करण के लिए इरादा नहीं है। [...] यह एक एसओएपी दोष तत्व और में उपस्थित होना चाहिए कम से कम कुछ जानकारी गलती की प्रकृति को समझाएं।

इसलिए, आप जब एक WCF सेवा से FaultException फेंकने गलती के लिए एक कारण प्रदान करनी चाहिए।

+0

यह संवेदना बनाता है। हालांकि, वेब पर जो भी उदाहरण और दस्तावेज मुझे मिलते हैं, उन्हें अनदेखा किया जाता है जो मुझे लगता है कि वहां हो सकता है डब्ल्यूसीएफ में इसे हल करने का एक और तरीका? –

+0

एक पूर्ण नमूना प्रोजेक्ट: http://msdn.microsoft.com/en-us/library/ee942778.aspx और फाल्टएक्सप्शन क्लास दस्तावेज़: http://msdn.microsoft.com/ en-us/पुस्तकालय/ms576199।एएसपीएक्स –

+0

ऐसा लगता है कि यह वीएस डीबगर में चुने गए ब्रेक विकल्पों का मामला है। –

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