2013-11-19 2 views
0

У меня есть следующий контроллер:Web Routing API пользовательские методы

public class CustomerController : ApiController 
{ 
    private ICustomerService customerService; 

    public CustomerController(ICustomerService customerService) 
    { 
     this.customerService= customerService; 
    } 

    public IEnumerable<Customer> GetAll() 
    { 
     return customerService.GetAll(); 
    } 

    [HttpGet] 
    public Customer GetCustomer(int id) 
    { 
     //Get customer code... 
     return customer; 
    } 

    [ActionName("Save")] 
    [AcceptVerbs("PUT")] 
    [HttpPost] 
    public int SaveCustomer(Customer customer) 
    { 
     //Save customer code... 
     return customer.id; 
    } 

    [ActionName("Test")] 
    [HttpGet] 
    public string TestCustomer() 
    { 
     return "test"; 
    } 

    [HttpDelete] 
    public bool DeleteCustomer(int id) 
    { 
     //Delete customer code... 
     return false; 
    } 
} 

У меня есть следующие умолчанию RouteConfig:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

И следующий WebApiConfig по умолчанию:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.EnableSystemDiagnosticsTracing(); 
    } 
} 

Когда я try ~ api/Customer Я получаю следующую ошибку: Было найдено несколько действий, которые соответствуют е запрос: System.Collections.Generic.IEnumerable`1 [Заказчик] GETALL() по типу MyApp.API.Controllers.PriceLevelController System.String TestCustomer() по типу MyApp.API.Controllers.CustomerController

Какие изменения для моей конфигурации маршрута мне нужно сделать так, чтобы мои методы по умолчанию, а также мои пользовательские методы работали при вызове с клиента?

ответ

0

Я думаю, что эта ошибка возникает, когда у вас есть несколько методов get с тем же параметром в вашем контроллере. вам нужно написать еще один маршрут в вашем файле конфигурации.

Вы можете обратиться к этому link

Смежные вопросы