我已经设置了一个路线模板:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{*wildcard}",
defaults: new { id = RouteParameter.Optional }
);
控制器的动作签名:
public IEnumerable<object> Get(Int64 id,string abc)
我试图将它与 URL http://mymachine.com/api/Individuals/1?abc=4匹配,但它给了我一个例外
{"$id":"1","Message":"发生错误。","ExceptionMessage":"对象引用未设置为对象的实例。","ExceptionType":"System.NullReferenceException", "StackTrace":" 在 System.Web.Http.ValueProviders.Providers.RouteDataValueProvider.d__4.MoveNext()\r\n
奇怪的是,http ://mymachine.com/api/Individuals?id=1&abc=4确实与控制器、动作和参数匹配。
我认为“ api/{controller}/{id}/{*wildcard}”的“ {id }”会起作用。
为什么?