2012-06-06 23 views
15

मेरी एपीआई नियंत्रक के भीतर भुगतान कहा जाता है, मैं निम्न विधि है:अजाक्स पोस्ट: 405 पद्धति अनुमत नहीं

[HttpPost] 
public HttpResponseMessage Charge(Payment payment) 
{ 
    var processedPayment = _paymentProcessor.Charge(payment); 
    var response = Request.CreateResponse(processedPayment.Status != "PAID" ? HttpStatusCode.ExpectationFailed : HttpStatusCode.OK, processedPayment); 
    return response; 
} 

मेरी HTML पृष्ठ में मेरे पास है:

$.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "http://localhost:65396/api/payment/charge", 
     data: $('#addPayment').serialize(), 
     dataType: "json", 
     success: function (data) { 
      alert(data); 
     } 
    }); 

जब भी मैं पोस्ट आग, मुझे

"NetworkError: 405 Method Not Allowed - http://localhost:65396/api/payment/charge" 

मुझे क्या याद आ रही है?

धन्यवाद।

अद्यतन

यहाँ रूटिंग जानकारी (डिफ़ॉल्ट)

routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

उत्तर

11

बाहर निकलता है मुझे सीओआरएस समर्थन को लागू करने की आवश्यकता है। http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx

+5

यह आलेख अधिक अद्यतित प्रतीत होता है। .. http://www.stevefenton.co.uk/Content/Blog/Date/201211/Blog/Using-CORS-With-ASP-NET-Web-API/ – Justin

11

सबसे अधिक संभावना अपने मार्ग कार्रवाई के लिए कॉन्फ़िगर नहीं किया गया लागू किया जा रहा है। इसलिए अनुरोध कहीं भी समाप्त नहीं होता है और एएसपी.नेट वेब एपीआई एक रिक्त-आउट संदेश भेजता है "विधि अनुमत नहीं है"।

क्या आप कृपया अपने मार्ग के साथ प्रश्न अपडेट कर सकते हैं?


अद्यतन

के रूप में मैंने सोचा था कि! आप http://localhost:65396/api/payment/charge पर भेज रहे हैं जबकि आपको http://localhost:65396/api/payment पर भेजने की आवश्यकता है - मानते हैं कि आपके नियंत्रक को PaymentController कहा जाता है।

ध्यान दें कि मार्ग में action नहीं है।

+0

में मदद की है, मैं केवल डिफ़ॉल्ट मार्गों का उपयोग कर रहा हूं। मैंने सवाल अपडेट कर लिया है। – Mike

+0

@ माइक अद्यतन उत्तर। 'चार्ज 'निकालें। – Aliostad

+0

मैं इसे चार्ज विधि का आह्वान कैसे करूं? मैं इस एपीआई नियंत्रक के भीतर अन्य POST विधियों के लिए जा रहा हूँ। – Mike

1

मुझे अपने नियंत्रक के साथ एक ही समस्या थी। एकमात्र चीज जो अलग है वह यूआरएल का अंत है। अंत में "0" "http://localhost:65396/api/payment/charge" जोड़ें, जिसने मुझे

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

  • कोई संबंधित समस्या नहीं^_^