2009-06-15 13 views
8

में वैकल्पिक पैरामीटर मेरे पास एक एएसपी.नेट वेब सेवा है। यह वेब सेवा ठीक काम करती है। हालांकि, डब्ल्यूएसडीएल कुछ पैरामीटर को वैकल्पिक (minoccurs = 0) और अन्य को गैर-वैकल्पिक के रूप में सूचीबद्ध करता है। कुछ वैकल्पिक पैरामीटर वास्तव में वैकल्पिक नहीं हैं, अन्य जो गैर-वैकल्पिक के रूप में चिह्नित हैं वास्तव में वैकल्पिक हैं। मैं इसे ठीक करना चाहता हूं, लेकिन मुझे वह स्थान नहीं मिल रहा है जहां से यह जानकारी आ रही है।एएसपी.नेट वेब सेवा

ऐसा लगता है कि सभी आदिम प्रकार (int, बूलियन इत्यादि) गैर-वैकल्पिक हैं और अन्य सभी पैरामीटर वैकल्पिक के रूप में चिह्नित हैं। हालांकि, मुझे कोई स्थान नहीं मिल रहा है जहां मैं इसे बदल सकता हूं। मैं मूल मानों के लिए डिफ़ॉल्ट मान निर्दिष्ट करना चाहता हूं यदि वे अनुरोध में अनुपलब्ध हैं और निर्दिष्ट करें कि कौन से गैर-आदिम पैरामीटर वास्तव में वैकल्पिक हैं। मैं यह कहां करूं?

उत्तर

7

मुझे लगता है कि जब आप एएसपीनेट वेब सेवाओं को कहते हैं, तो आप एएसएमएक्स एक्सटेंशन के साथ वेब सेवाएं बना रहे हैं। मुझे लगता है कि इस मामले में क्या होता है यह है कि सभी नामुमकिन प्रकार वैकल्पिक हो जाते हैं और गैर-निरर्थक गैर-वैकल्पिक बन जाते हैं।

आप शायद जेनरेट की गई WSDL फ़ाइल को मैन्युअल रूप से संपादित कर सकते हैं। लेकिन अगर wsdl पुनर्जन्मित किया गया था तो आपको उस काम को फिर से करना होगा।

मैं सुझाव दूंगा कि आप डब्लूसीएफ पर आधार के साथ स्विच करें। (आपके सेवा के नाम को छोड़कर आपके ग्राहकों को अंतर नहीं दिखाना चाहिए)।

[DataMember(IsRequired="false")] 
+0

इस उत्तर लगभग पूरी तरह से गलत है है। आप वैकल्पिक पैरामीटर के बजाय nullables का उपयोग नहीं कर सकते हैं। चूंकि नेट 4.0 आप किसी भी विधि में [वैकल्पिक पैरामीटर] (http://msdn.microsoft.com/en-us/library/dd264739.aspx) का उपयोग कर सकते हैं। – Bora

+1

@ बोरा, उत्तर 200 9 से है, उस समय यह उपलब्ध था। –

+0

इसके साथ कुछ भी गलत नहीं है। बस अपना जवाब अपडेट करें और सब ठीक हो जाएगा। – Bora

6

पुरातन संदर्भ प्रकार नहीं कर रहे हैं, बल्कि वे मूल्य प्रकार हैं:

WCF का उपयोग करके आप डेटा अनुबंध में पैरामीटर के रूप में की आवश्यकता है या नहीं बस चिह्नित कर सकते हैं। आप मान कुछ तरीकों से "शून्य" टाइप कर सकते हैं।

शॉर्ट हाथ

int? i; 

या लंबी हाथ यहाँ

Nullable<int> i; 
+0

पैरामीटर को छोड़कर (और डिफ़ॉल्ट का उपयोग करें) बनाम मूल्य को शून्य पर सेट करने के लिए आप कैसे अंतर करते हैं? – Shiv

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