2014-11-11 8 views
11

मुझे घृणा है कि इस समस्या का समाधान नहीं मिला है।वेब एपीआई 2 एचटीपी पोस्ट विधि

मैंने वेब एपीआई 2 का उपयोग करके एक नया एपीआई बनाना शुरू किया और काम करने के लिए पोस्ट और पुट नहीं मिल सका। सभी प्राप्त करें और एकल आइटम पूरी तरह से ठीक काम करता है।

कोई संबंधित लेख कहीं भी रहे हैं, और उन है कि मैं मिल गया है केवल करने के लिए संबंधित हो जाता है और वेब एपीआई, लेकिन नहीं जाल एपीआई 2.

किसी भी सहायता के लिए कृपया करना होगा।

// POST: api/checkOuts 
    [HttpPost] 
    [ResponseType(typeof(checkOut))] 
    [ApiExplorerSettings(IgnoreApi = true)] 
    public async Task<IHttpActionResult> PostcheckOut(checkOut co) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     db.checkOuts.Add(checkOut); 

     try 
     { 
      await db.SaveChangesAsync(); 
     } 
     catch (DbUpdateException) 
     { 
      if (checkOutExists(checkOut.id)) 
      { 
       return Conflict(); 
      } 
      else 
      { 
       throw; 
      } 
     } 

     return CreatedAtRoute("DefaultApi", new { id = checkOut.id }, checkOut); 
    } 

तो मूल रूप से, मैं बस विधि में डीबग करने का प्रयास कर रहा हूं।

इस लिंक में विशेष रूप से निराश था क्योंकि इसमें लगभग सबकुछ शामिल था, लेकिन एआई। http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing

सादर

+0

क्या आप आसपास के वर्ग की घोषणा पोस्ट भी कर सकते हैं और क्या आप इसका परीक्षण करते समय अपने आरईएसटी क्लाइंट में अपना अनुरोध प्रकार HTTP पोस्ट पर सेट कर रहे हैं? –

+0

धन्यवाद, मैंने अनुरोध के अनुसार कोड के साथ अपनी पोस्ट संपादित की है। हां, मैं इसे क्रोम पोस्टमैन, फ़ायरफ़ॉक्स रेस्ट क्लाइंट और फ़ायरफ़ॉक्स पोस्टर के साथ पोस्ट और परीक्षण करने के लिए सेट कर रहा हूं, त्रुटि कोड 405 वापस कर दिया गया है। पुनश्च! रूटिंग एक मुद्दा नहीं है। – DJJ

+0

वेबएपीआई 2 अनुप्रयोगों को प्रकाशित करने के बाद 405 त्रुटियों की समस्या निवारण के बारे में यह आलेख है, मुझे यकीन नहीं है कि यह कोई सहायता प्रदान करता है: [http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting- http-405-त्रुटियों के बाद प्रकाशन-वेब-api-अनुप्रयोगों] (http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing -वेब-एपीआई-अनुप्रयोग) –

उत्तर

16

यह एक काम कोड

 // POST api/values 
     [HttpPost] 
     [ResponseType(typeof(CheckOut))] 
     public async Task<IHttpActionResult> Post([FromBody] CheckOut checkOut) 
     { 
      if (checkOut == null) 
      { 
       return BadRequest("Invalid passed data"); 
      } 

      if (!ModelState.IsValid) 
      { 
       return BadRequest(ModelState); 
      } 

      db.checkOuts.Add(checkOut); 

      try 
      { 
       await db.SaveChangesAsync(); 
      } 
      catch (DbUpdateException) 
      { 
       if (checkOutExists(checkOut.id)) 
       { 
        return Conflict(); 
       } 
       else 
       { 
        throw; 
       } 
      } 

      return CreatedAtRoute("DefaultApi", new { id = checkOut.Id }, checkOut); 
     } 

मैं घोषित किया है चेकआउट वर्ग है इस तरह होने के लिए:

public class CheckOut 
{ 
    public int Id { get; set; } 
    public string Property2 { get; set; } 
} 

यहां मुख्य बातें इस प्रकार हैं:

1- आपको [FromBody] को अपनी एपीआई विधि में जोड़ना होगा। 2- मैंने फिस्टलर का उपयोग करके इसका परीक्षण किया है, i- POST कार्रवाई चुनकर। ii- सामग्री-प्रकार: एप्लिकेशन/जेसन। iii- संदेश निकाय में {"आईडी": 1, "संपत्ति 2": "कुछ भी"} गुजर रहा है।

उम्मीद है कि मदद करता है।

+0

धन्यवाद लेकिन मुझे अभी भी वही 405 त्रुटि मिल रही है। मुझे यकीन नहीं है कि यह पर्यावरण के साथ कुछ करने के लिए है या नहीं, जैसा कि मैंने एक नई एपीआई परियोजना बनाई है और अभी भी वही समस्याएं हैं – DJJ

+0

क्या आप मुझे यह प्रोजेक्ट भेजना चाहते हैं जिसके साथ मैंने इसका परीक्षण किया है? मैं इसे आपके साथ साझा कर सकता हूं। –

+0

धन्यवाद, सराहना की जाएगी। – DJJ

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