2012-12-10 29 views
8

मैं एक डब्ल्यूसीएफ webservice बना रहा हूं जिसका अनुरोध/प्रतिक्रिया केवल हस्ताक्षरित होने चाहिए। इस के लिए, ServiceContract विशेषता पर मैंक्यों कुछ स्थितियों में डब्ल्यूसीएफ साबुनफॉल्ट प्रतिक्रियाएं एन्क्रिप्ट की गई हैं?

ProtectionLevel = ProtectionLevel.Sign 

कि ठीक से काम करता है निर्धारित किया है।

कुछ सूपफॉल्ट को सेवा से फेंक दिया जाना चाहिए; SoapFaults के दो प्रकार:

  • आवेदन
  • से संबंधित से संबंधित WS-को संबोधित करते (जैसे MessageId याद आ रही है)

इस मैं SoafFaults से निपटने का दृष्टिकोण के सामान्य उपयोग कर रहा हूँ के लिए: एक बनाने IErrorHandler जिसमें MessageFault.CreateFault के साथ एक संदेश उदाहरण बनाया गया है।

लगभग सभी लौटाए गए साबुनफॉल्ट एन्क्रिप्टेड नहीं हैं (जो मेरे लिए ठीक है), मेरा प्रश्न यह है कि कार्रवाई वाले लोग = "http://www.w3.org/2005/08/addressing/fault" या "http://www.w3.org/2005/08/addressing/soap/fault" एन्क्रिप्टेड हैं?

+0

आप कैसे जानते हैं कि यह एन्क्रिप्ट किया गया है? क्या आप नमूना प्रतिक्रिया दे सकते हैं? – esskar

+0

मुझे पता है एन्क्रिप्ट किया गया है क्योंकि मैं इसे SvcTraceViewer (क्लाइंट साइड पर) के साथ देखता हूं। – csg

+0

@csg क्या आपको पता चला है क्यों? मुझे भी बिलकुल यही समस्या हो रही है। –

उत्तर

0

http://msdn.microsoft.com/en-us/library/aa347791.aspx और http://msdn.microsoft.com/en-us/library/system.servicemodel.faultcontractattribute.aspx देखें। यह कहा गया है कि

आप एक सक्षम बाध्यकारी है कि सुरक्षा चयन करें और आप ProtectionLevel गुण अनुबंध पर कहीं भी निर्धारित नहीं करते हैं, सभी आवेदन डेटा एन्क्रिप्टेड और हस्ताक्षर किए जाएंगे तो।

मुझे लगता है कि डिफ़ॉल्ट रूप से प्रकारों में निर्माण इस व्यवहार का उपयोग करता है। आप इसे देखकर सत्यापित कर सकते हैं कि वास्तव में कौन सा अपवाद फेंक दिया गया है।

+0

सुरक्षा स्तर अनुबंध स्तर पर सेट किया गया है: [ServiceContract (ProtectionLevel = ProtectionLevel.Sign)] – csg