2012-10-11 12 views
7

मैं डेटाकंट्रैक्ट गुणों को आवश्यक बनाने के लिए [DataMember(IsRequired=true)] का उपयोग करता हूं। ऑपरेशन कंट्रैक्ट पैरामीटर के लिए कुछ IsRequired प्रतीत नहीं होता है। मैं उन्हें कैसे जरूरी बना सकता हूं और शून्य की अनुमति नहीं देता?डब्ल्यूसीएफ: क्या ऑपरेशन कंट्रैक्ट में पैरामीटर बनाने के लिए कोई विशेषता है?

ऑपरेशन कंट्रैक्ट का पैरामीटर सोपयूआई टूल में वैकल्पिक प्रतीत होता है। हालांकि यह कभी भी वैकल्पिक या शून्य नहीं होना चाहिए।

WCF इंटरफ़ेस:

[OperationContract] 
IsClientUpdateRequiredResult IsClientUpdateRequired(IsClientUpdateRequiredInput versie); 

... 

[DataContract] 
public class IsClientUpdateRequiredInput 
{ 
    [DataMember(IsRequired=true)] 
    public string clientName { get; set; } 
    [DataMember(IsRequired = true, Order = 0)] 
    public int major { get; set; } 
    [DataMember(IsRequired = true, Order = 1)] 
    public int minor { get; set; } 
    [DataMember(IsRequired = true, Order = 2)] 
    public int build { get; set; } 
    [DataMember(IsRequired = true, Order = 3)] 
    public int revision { get; set; } 
} 

soapUI अनुरोध टेम्पलेट:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:pir="http://schemas.datacontract.org/2004/07/PirIS.Web.WCF.InputClasses"> 
    <soap:Header/> 
    <soap:Body> 
     <tem:IsClientUpdateRequired> 
     <!--Optional:--> 
     <tem:versie> 
      <pir:clientName>?</pir:clientName> 
      <pir:major>?</pir:major> 
      <pir:minor>?</pir:minor> 
      <pir:build>?</pir:build> 
      <pir:revision>?</pir:revision> 
     </tem:versie> 
     </tem:IsClientUpdateRequired> 
    </soap:Body> 
</soap:Envelope> 

उत्तर

4

दुर्भाग्यवश यह डिफ़ॉल्ट डब्ल्यूसीएफ का उपयोग करके नहीं किया जा सकता है। कुछ समाधान मौजूद हैं:

का उपयोग करते हुए आप फिर भी एक FaultContract एक गलती को लागू करने और फेंक कर सकते हैं जब इनपुट पैरामीटर रिक्त है ।

+0

धन्यवाद। बस एमएस ने डब्ल्यूसीएफ में इसका ख्याल रखा था। – Dieko

1

बस किसी भी नियमित रूप से विधि की तरह नहीं।, आप संदर्भ प्रकार पैरामीटर एक मूल्य के हैं या नहीं करने की आवश्यकता होगी या null हैं।

बस अपने सामान्य रक्षात्मक प्रोग्रामिंग पैटर्न लागू करें, उनके गुणों तक पहुंचने से पहले संदर्भ प्रकारों की जांच करें।

+0

सच। हमेशा अप्रत्याशित उम्मीद है। – Dieko

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

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