2014-06-08 10 views
12

मैं एक ASP.NET वेब एपीआई का आयोजन किया और HTTP GET अनुरोध ठीक है, मैं अभी की तरह एक PostAsync अनुरोध करने के लिए मापदंडों के एक जोड़े में उत्तीर्ण होना का उपयोग कर सकते हैं:पोस्ट JSON HttpContent ASP.NET वेब एपीआई के

var param = Newtonsoft.Json.JsonConvert.SerializeObject(new { id=_id, code = _code }); 
HttpContent contentPost = new StringContent(param, Encoding.UTF8, "application/json"); 

var response = client.PostAsync(string.Format("api/inventory/getinventorybylocationidandcode"), contentPost).Result; 

यह कॉल 404 नहीं मिला परिणाम मिला है।

[HttpPost] 
public List<ItemInLocationModel> GetInventoryByLocationIDAndCode(int id, string code) { 
... 
} 

और बस वेब एपीआई पर अपने मार्ग की पुष्टि करने के इस तरह दिखता है: इसलिए की तरह

सर्वर साइड एपीआई कार्रवाई लग रहा है

config.Routes.MapHttpRoute(
      name: "DefaultApiWithAction", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
); 

मैं मैं JSON गुजर रहा हूँ मान HttpContent गलत तरीके से, यह 404 लौटने की स्थिति क्यों होगी?

उत्तर

5

आपको 404 प्राप्त करने का कारण यह है कि ढांचे को आपके अनुरोध को निष्पादित करने का कोई तरीका नहीं मिला। डिफ़ॉल्ट रूप से, वेब एपीआई विधियों में पैरामीटर को बाध्य करने के लिए निम्न नियमों का उपयोग करता है:

  • यदि पैरामीटर एक "सरल" प्रकार है, तो वेब एपीआई यूआरआई से मूल्य प्राप्त करने का प्रयास करता है। सरल प्रकारों में .NET आदिम प्रकार (int, bool, double, और so आगे), प्लस टाइमस्पेन, डेटटाइम, ग्रिड, दशमलव, और स्ट्रिंग, प्लस किसी भी प्रकार के प्रकार कनवर्टर के साथ शामिल है जो स्ट्रिंग से परिवर्तित हो सकता है। (बाद में प्रकार कनवर्टर्स के बारे में अधिक जानकारी।)
  • जटिल प्रकारों के लिए, वेब एपीआई media-type formatter का उपयोग करके संदेश निकाय से मूल्य पढ़ने की कोशिश करता है।

उन नियमों को देखते हुए, अगर आप पोस्ट शरीर से पैरामीटर बाध्य करने के लिए चाहते हैं बस प्रकार के सामने एक [FromBody] विशेषता जोड़ें:

[HttpPost] 
public List<ItemInLocationModel> GetInventoryByLocationIDAndCode([FromBody] int id, string code) { 
... 
} 

अधिक जानकारी please see the documentation लिए।

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