2013-01-18 7 views
15

AJAX जेसन के माध्यम से डब्ल्यूसीएफ सेवा को कॉल करते समय मुझे उपरोक्त प्रतिक्रिया मिलती है। मेरे फोन करने कोड है:संदेश को संसाधित नहीं कर सकता क्योंकि सामग्री प्रकार 'एप्लिकेशन/जेसन; charset = utf-8 'अपेक्षित प्रकार' टेक्स्ट/xml नहीं था; charset = utf-8 '

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax 
     ({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "http://localhost:90/WebServices/UserService.svc/Calculate", 
      data: "{}", 
      timeout: 10000, 
      dataType: "json", 
      success: function (response) { 
       alert(response) 
      }, 
      error: function (xhr, ajaxOptions, thrownError) { 
       alert(xhr.statusText); 
       alert(thrownError); 
      } 
     }); 
    }); 
</script> 

मेरी सेवा है:

[ServiceContract] 
public interface IUserService 
{ 
    [OperationContract] 
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json 
    )] 
    Answer Calculate(); 
} 

[DataContract] 
public class Answer 
{ 
    [DataMember] 
    public string answer { get; set; } 
} 

मेरे विधि है:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
public class UserService : IUserService 
{ 
    public Answer Calculate() 
    { 
     Answer answer = new Answer(); 
     answer.answer="Hello World"; 
     return answer; 
    } 
} 

मैं कुछ समय के लिए के साथ जूझ कर दिया है, मैं देख अन्य लोगों को एक ही पड़ा है समस्या टाइप करें और मैंने सभी सुझावों का प्रयास किया लेकिन अभी भी कुछ भी काम नहीं कर रहा है।

समस्या कहां है? मैं इसे कैसे सुलझाऊं?

+0

हाय, आपने किस सुझाव का प्रयास किया? –

उत्तर

16

मैं अनुमान लगा रहा हूं क्योंकि आपने यह नहीं दिखाया कि आपने अपना एंडपॉइंट कैसे परिभाषित किया है, लेकिन मुझे पूरा यकीन है कि यह मामला है। आपका एंडपॉइंट वेब उपभोग के लिए परिभाषित नहीं है - यह संभवतः basicHttpBinding का उपयोग कर रहा है। JQuery (या सामान्य रूप से अन्य वेब/आरईएसटी क्लाइंट) के माध्यम से एंडपॉइंट का उपभोग करने के लिए आपको WebHttpBinding के साथ एंडपॉइंट परिभाषित करने की आवश्यकता है, और WebHttpBehavior पर लागू करें।

एंडपॉइंट को सही ढंग से परिभाषित करने के विभिन्न तरीके हैं।

UserService.svc: सबसे आसान एक अपने .svc फ़ाइल में WebServiceHostFactory उपयोग करने के लिए है

<%@ ServiceHost Language="C#" Debug="true" Service="YourNamespace.UserService" 
       Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> 
1

किसी को जो खोज के द्वारा यहां भूमि के लिए: 'सामग्री प्रकार' आवेदन/json; charset = utf-8 'अपेक्षित प्रकार' टेक्स्ट/xml नहीं था; charset = utf-8 '

उचित स्थिति के बिना सेवा बनाने और चलाने के द्वारा मेरे मामले में एक ही त्रुटि हुई थी। जब मैंने अपने क्लाइंट एप्लिकेशन में सेवा संदर्भ को अपडेट करने का प्रयास किया तो मुझे यह त्रुटि संदेश मिला। जब मैं सही ढंग से '[डेटाकंट्रैक्ट]' और '[डेटामेम्बर]' गुणों को अपने कस्टम वर्गों में लागू करता हूं तो इसे हल किया गया था।

संपादित करें: यदि आपकी सेवा स्थापित की गई थी और काम कर रहा था तो यह संभवतः लागू होगा और फिर इसे संपादित करने के बाद इसे तोड़ दिया जाएगा।

+1

विस्तृत करने के लिए कोड नमूना जोड़ें। –

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