tôi đã thiết lập một mẫu đường:Wildcard trong WebAPI Route mẫu
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{*wildcard}",
defaults: new { id = RouteParameter.Optional }
);
chữ ký controller action của:
public IEnumerable<object> Get(Int64 id,string abc)
Tôi cố gắng để kết hợp nó với URL http://mymachine.com/api/Individuals/1?abc=4, nhưng nó mang lại cho tôi một ngoại lệ
{"$ id": "1", "Thư": "Đã xảy ra lỗi .", "ExceptionMessage": "Tham chiếu đối tượng không s và đối với một thể hiện của đối tượng . "," Loại ngoại lệ ":" System.NullReferenceException "," StackTrace ":" tại System.Web.Http.ValueProviders.Providers.RouteDataValueProvider.d__4.MoveNext() \ r \ n
Kỳ lạ, http://mymachine.com/api/Individuals?id=1&abc=4 không khớp với bộ điều khiển, hành động và thông số.
tôi nghĩ "{id}" của "api/{controller}/{id}/{* wildcard}" sẽ làm việc.
Tại sao?
Bạn không thể có tham số tùy chọn, sau đó là một tham số không bắt buộc! Ngoài ra nếu bạn đang đi qua abc như chuỗi truy vấn thì bạn không cần phải có nó trong tuyến đường! Tôi sẽ làm lại tuyến đường của tôi nếu tôi ở vị trí của bạn ... cho nó một ý nghĩ –