मैं एमवीसी 4 वेब एपीआई प्रोजेक्ट का उपयोग शुरू कर रहा हूं, मेरे पास एकाधिक HttpPost
विधियों के साथ नियंत्रक है। नियंत्रक निम्नलिखित की तरह दिखता है:वेब एपीआई नियंत्रक में एकाधिक एचटीपीपोस्ट विधि
नियंत्रक
public class VTRoutingController : ApiController
{
[HttpPost]
public MyResult Route(MyRequestTemplate routingRequestTemplate)
{
return null;
}
[HttpPost]
public MyResult TSPRoute(MyRequestTemplate routingRequestTemplate)
{
return null;
}
}
यहाँ MyRequestTemplate
टेम्पलेट वर्ग Json से निपटने अनुरोध के माध्यम से आ रहा है के लिए जिम्मेदार प्रतिनिधित्व करता है।
त्रुटि: अगर मैं उपरोक्त विधि यह ठीक काम करता है में से एक को दूर
Multiple actions were found that match the request
:
जब मैं http://localhost:52370/api/VTRouting/TSPRoute
या http://localhost:52370/api/VTRouting/Route
के लिए एक अनुरोध फ़िडलर का उपयोग कर मैं एक त्रुटि मिलती है।
Global.asax
मैं global.asax
में डिफ़ॉल्ट रूटिंग तालिका को संशोधित करने की कोशिश की है, लेकिन मैं अभी भी त्रुटि हो रही है, मुझे लगता है कि मैं Global.asax में मार्गों को परिभाषित करने में समस्या है। ग्लोबल.एक्सएक्स में मैं यही कर रहा हूं।
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpRoute(
name: "MyTSPRoute",
routeTemplate: "api/VTRouting/TSPRoute",
defaults: new { }
);
routes.MapHttpRoute(
name: "MyRoute",
routeTemplate: "api/VTRouting/Route",
defaults: new {action="Route" }
);
}
मैं पोस्ट का उपयोग कर फ़िडलर में अनुरोध कर रहा हूँ, MyRequestTemplate के लिए RequestBody में json गुजर।
ठीक काम करता है ..... – yogee
यदि मैं आईडी के प्रकार पर कोई प्रतिबंध सेट नहीं करना चाहता हूं तो क्या होगा? मतलब: मैं स्ट्रिंग आईडी को भी कैसे स्वीकार कर सकता हूं? – frapontillo
@ फ्रैपोंटिलो: आईडी एक अभिन्न अंग होना चाहिए, ताकि यह मार्ग के नाम से विचलित हो जाए अन्यथा रूटिंग एनघिन इसे एक क्रिया नाम के रूप में एक आईडी नाम के रूप में मान लेगा। यदि आपको आईडी को स्ट्रिंग के रूप में रखना है तो आप एक क्रिया बना सकते हैं। –