2009-02-16 13 views
8

मैं एक ऑपरेशन अनुबंध (नीचे) है कि मैं के खिलाफ प्राप्त और पोस्ट अनुरोध की अनुमति देना चाहते है। मैं एक ऑपरेशन कंट्रैक्ट के लिए दोनों प्रकार के अनुरोधों को स्वीकार करने के लिए डब्ल्यूसीएफ को कैसे बता सकता हूं?एक ही ऑपरेशन पर कई HTTP तरीके सक्षम करें?

[OperationContract, 
WebInvoke(Method="POST", 
    BodyStyle = WebMessageBodyStyle.Bare, 
    RequestFormat = WebMessageFormat.Xml, 
    ResponseFormat = WebMessageFormat.Xml, 
    UriTemplate = "query")] 
XElement Query(string qry); 

[OperationContract, 
WebInvoke(Method="GET", 
    BodyStyle = WebMessageBodyStyle.Bare, 
    RequestFormat = WebMessageFormat.Xml, 
    ResponseFormat = WebMessageFormat.Xml, 
    UriTemplate = "query?query={qry}")] 
XElement Query(string qry); 

उत्तर

5

MSDN Forums by Carlos Figueira पर अधिक इस पोस्ट में एक समाधान है। मैं इसके साथ अभी जाऊंगा लेकिन अगर किसी और के पास कोई क्लीनर समाधान है तो मुझे बताएं।

[OperationContract, 
WebInvoke(Method="POST", 
    BodyStyle = WebMessageBodyStyle.Bare, 
    RequestFormat = WebMessageFormat.Xml, 
    ResponseFormat = WebMessageFormat.Xml, 
    UriTemplate = "query")] 
XElement Query_Post(string qry); 

[OperationContract, 
WebInvoke(Method="GET", 
    BodyStyle = WebMessageBodyStyle.Bare, 
    RequestFormat = WebMessageFormat.Xml, 
    ResponseFormat = WebMessageFormat.Xml, 
    UriTemplate = "query?query={qry}")] 
XElement Query_Get(string qry); 
-3

का उपयोग नहीं WebInvoke चाल करेंगे।

कि इस सवाल का जवाब आप देख रहे हैं, हालांकि नहीं हो सकता।

+0

क्या आप प्रयोग नहीं मतलब है webinvoke चाल क्या करेंगे? –

1

आप WebGetAttribute पर एक नज़र लेने के लिए चाहते हो सकता है, मैं इसे अपने आप प्रयास नहीं किया है, लेकिन आप WebInvokeAttribute के साथ-साथ एक ही विधि करने के लिए इसे लागू करने में सक्षम हो सकता है।

MSDN पर जानकारी, और Jeff Barnes पर जानकारी।

+0

वेबइवोक (विधि = "जीईटी") और वेबगेट() –

1

मुद्दे के लिए ऊपर वर्णित है, WebInvoke बदलते Query_Get एपीआई के मामले में WebGet के लिए इस मुद्दे का समाधान होगा।

+0

के बीच कोई अंतर नहीं है WebInvoke (विधि = "GET") और WebGet() –

-1

प्राप्त करें और पोस्ट करें हालांकि विभिन्न कार्यों को इंगित करें।

क्या यह ग्राहकों के लिए भ्रमित नहीं होगा, और एक आरईएसटी परिप्रेक्ष्य से गलत होगा?

+1

के बीच कोई अंतर नहीं है I W3C से विनिर्देश के आधार पर एंडपॉइंट कोडिंग कर रहा हूं । यह विनिर्देश एक विधि का वर्णन करता है जो एकाधिक संचालन (जीईटी और पोस्ट) का समर्थन करता है। यदि क्वेरी जीईटी अनुरोध (यूआरएल लम्बाई) के लिए बड़ी है तो उपभोक्ता POST का उपयोग कर सकता है। –

18

बैठाना अगर कोई एक अलग समाधान की तलाश में,

[OperationContract] 
[WebInvoke(Method="*")] 
public <> DoWork() 
{ 
    var method = WebOperationContext.Current.IncomingRequest.Method; 
    if (method == "POST") return DoPost(); 
    else if (method == "GET") return DoGet(); 
    throw new ArgumentException("Method is not supported."); 
} 
+0

विधि = "*" मान्य के रूप में पहचाना नहीं गया है। अनुमत मूल्य प्राप्त और पोस्ट हैं। –

+0

मेरे लिए काम किया। काम का मुझे सहेजा बहुत :) – batbaatar

+0

यह मेरे लिए बहुत काम किया,; लेकिन मैं उस के बारे में आधिकारिक दस्तावेज नहीं मिल सकता है, और न ही यहाँ https://msdn.microsoft.com/en-us/library/system.servicemodel.web.webinvokeattribute.method(v=vs.110).aspx न यहाँ से https: //msdn.microsoft.com/en-us/library/system.servicemodel.web.webinvokeattribute%28v=vs.110%29.aspx – Giuseppe

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