Tôi đang gặp sự cố với định tuyến Web.API của mình. Tôi có hai tuyến đường sau:Web.API MapHttpThông số tuyến
config.Routes.MapHttpRoute(
name: "MethodOne",
routeTemplate: "api/{controller}/{action}/{id}/{type}",
defaults: new { id = RouteParameter.Optional, type = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "MethodTwo",
routeTemplate: "api/{controller}/{action}/{directory}/{report}",
defaults: new { directory = RouteParameter.Optional, report = RouteParameter.Optional }
);
Và trong điều khiển của tôi hai phương pháp:
[HttpGet]
[ActionName("methodone")]
public string MethodOne(string id, string type)
{
return string.Empty;
}
[HttpGet]
[ActionName("methodtwo")]
public string MethodTwo(string directory, string report)
{
return string.Empty;
}
Hai dường như không thể sống cạnh nhau. Nếu tôi nhận xét tuyến đường MethodOne trong WebApiConfig, tuyến đường MethodTwo sẽ hoạt động. Commenting MethodTwo route cho phép MethodOne hoạt động. Để cả hai không được chú ý, MethodOne hoạt động, nhưng không phải là MethodTwo.
Tôi đã hy vọng sử dụng một lộ trình cho cả hai loại này, có vẻ như chúng sẽ phải có cùng tên thông số. Ai viết phương pháp với tên tham số chung? Xấu. Tôi thực sự không muốn các phương thức của tôi có cùng tên tham số (như p1, p2, p3), vì vậy tôi nghĩ rằng tôi có thể tạo một tuyến đường chỉ cho phương thức mới. Nhưng ngay cả điều này dường như không hoạt động.
Tôi thực sự bỏ lỡ số WebGet(UriTemplate="")
từ phần còn lại WCF.
Tôi có một bộ điều khiển có nhiều phương pháp, một số có tham số 1, 2, 3 hoặc thậm chí nhiều hơn. Tôi không thể tin rằng tôi không thể sử dụng tên tham số có ý nghĩa với cách tiếp cận MapHttpRoute.
Tôi có thể nhận xét nội dung đó ra hoàn toàn và sử dụng WebGet()
... nhưng trước khi tôi đến đó, tôi muốn xem liệu tôi có thiếu gì đó không.
Tôi sẽ cung cấp cho điều này một đi và cho bạn biết nếu nó hoạt động. Các bummer là tôi cần phải làm điều này bây giờ cho mọi phương pháp mà tôi muốn có một cách chính xác đặt tên tham số cho. Nó có thể được dễ dàng hơn để đi tuyến đường Youssef liên kết hoặc WebGet- những người thậm chí còn ít công việc và rõ ràng hơn. – Nicros
Vì vậy, điều này không làm việc, cảm ơn. Tuy nhiên, điều này, IMHO, là crap. Không phải giải pháp của bạn mà là cách tiếp cận toàn bộ tuyến đường. Tôi hoặc phải có một lộ trình cho mọi phương pháp, không tốt đẹp, hoặc sử dụng WebGet cũ hoặc GET mới từ thuộc tính và nhận xét ra tất cả các công cụ định tuyến. Tôi thú nhận tôi không phải là một anh chàng web lớn, vì vậy có lẽ tôi đang làm một cái gì đó không chuẩn, nhưng điều này có vẻ như một cách tiếp cận rất hạn chế so với UriTemplate. – Nicros
Tôi nghe bạn. Định tuyến chúng tôi hỗ trợ cho API Web v1 hoạt động tốt cho định tuyến dựa trên hành động HTTP hoặc hành động dựa trên định tuyến tương ứng. Tuy nhiên, nó không hoạt động tốt, vì chúng tôi đang làm việc để cải thiện câu chuyện, hãy xem http://aspnetwebstack.codeplex.com/workitem/184 –