पर अपवाद फेंकने का सही तरीका मैं सबसे सामान्य तरीके से डब्ल्यूसीएफ पर अपवाद भेजने की कोशिश कर रहा हूं। यहाँ मैं क्या कर लिया है:डब्ल्यूसीएफ
[ServiceContract]
interface IContract
{
[OperationContract]
void Foo();
}
class ContractImplementation: IContract
{
public void Foo()
{
try
{
Bar();
}
catch (Exception ex)
{
throw new FaultException<Exception>(ex, ex.Message);
}
}
}
अपवाद है कि वास्तव में Bar
से बाहर आ रहा है:
[Serializable]
class MyException : Exception
{
// serialization constructors
}
त्रुटि मैं सर्वर साइड WCF लॉगिंग में दिखाई दे रही है है:
डेटा अनुबंध नाम 'MyException: http://schemas.datacontract.org/2004/07/MyException' के साथ 'MyException' टाइप करें। DataContractResolver का उपयोग करने पर विचार करें या किसी भी प्रकारों को ज्ञात प्रकारों की सूची में स्थिर रूप से ज्ञात नहीं है - उदाहरण के लिए, KnownTypeAttribute विशेषता का उपयोग करके या उन्हें डेटाकंट्रैक्टसेरियलाइज़र को ज्ञात ज्ञात प्रकारों की सूची में जोड़कर जोड़ें।
क्या मैं अब तक की कोशिश की है:
[ServiceKnownType(typeof(MyException))]
[ServiceContract]
interface IContract
{
[FaultContract(typeof(MyException))]
[OperationContract]
void Foo();
}
लेकिन कोई भाग्य।
ऐसा इसलिए हो सकता है क्योंकि आप नए FaultException (पूर्व, ex.Message) फेंक देते हैं; और नहीं "नया FaultException (पूर्व, ex.Message) फेंक दें;" ? इसके अलावा, FaultException की TDetail को अपवाद नहीं होना चाहिए –
hazzik
@ हज़िक: मैं विस्तार में वास्तविक अपवाद डाल रहा हूं क्योंकि मैं इसे क्लाइंट पक्ष पर पुनर्स्थापित करना चाहता हूं। – Tudor