मैं एक मार्ग टेम्पलेट की स्थापना की है:वाइल्डकार्ड मार्ग टेम्पलेट
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{*wildcard}",
defaults: new { id = RouteParameter.Optional }
);
नियंत्रक की कार्रवाई हस्ताक्षर:
public IEnumerable<object> Get(Int64 id,string abc)
मैं यूआरएल http://mymachine.com/api/Individuals/1?abc=4 के साथ मिलाने का प्रयास किया है, लेकिन यह मेरे लिए एक अपवाद देता
{"$ id": "1", "संदेश": "त्रुटि में हुआ।", "अपवाद संदेश": "ऑब्जेक्ट संदर्भ नहीं है एक वस्तु का एक उदाहरण को एट "," ExceptionType। ":" System.NullReferenceException "," StackTrace ":" System.Web.Http.ValueProviders.Providers.RouteDataValueProvider.d__4.MoveNext() पर \ r \ एन
आश्चर्यजनक रूप से, http://mymachine.com/api/Individuals?id=1&abc=4 नियंत्रक, क्रिया और पैरामीटर के साथ मेल खाता है।
मैंने सोचा था कि "{आईडी}" के "एपीआई/{नियंत्रक}/{आईडी}/{* वाइल्डकार्ड}" काम करेंगे।
क्यों?
आप गौर कर सकते हैं वैकल्पिक पैरामीटर नहीं हो सकता है तो एक गैर वैकल्पिक एक! अगर आप क्वेरी स्ट्रिंग के रूप में एबीसी पास कर रहे हैं तो आपको इसे रूट में रखने की आवश्यकता नहीं है! अगर मैं आपकी जगह पर था तो मैं अपना मार्ग दोबारा कर दूंगा ... इसे एक विचार दें –