2017-09-26 80 views
0

我使用MySQL DB在visual studio 2015中创建了WEB API。我有三个GET方法。一个是给出所有数据,第二个是给出基于ID的结果,第三个是根据序列号给出结果。前两种方法是完美的,但最后一种不是。我还在解决方案中添加了多个路由。下面是我的代码无法在单个控制器中运行多个GET方法

WebApiConfig

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 



     config.Routes.MapHttpRoute(
     name: "GetByMsn", 
     routeTemplate: "api/{controller}/{action}/{msn}", 
     defaults: null, 
     constraints: new { msn = @"^[a-z]+$" } 

控制器

public HttpResponseMessage Get() 
    { 
     try 
     { 
      return Request.CreateResponse(HttpStatusCode.Found, mEntities.meters_info_dev.ToList()); 
     } 
     catch (Exception ex) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex); 
     } 
    } 


    // GET by ID 
    public HttpResponseMessage GetByID(int id) 
    { 
     try 
     { 
      return Request.CreateResponse(HttpStatusCode.Found, mEntities.meters_info_dev.SingleOrDefault(m => m.id == id)); 
     } 
     catch (Exception ex) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex); 
     } 
    } 


    // GET by serial number 
    public HttpResponseMessage GetByMsn(string msn) 
    { 
     try 
     { 
      return Request.CreateResponse(HttpStatusCode.Found, mEntities.meters_info_dev.SingleOrDefault(m=> m.meter_msn == msn)); 
     } 
     catch 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No Data found"); 
     } 
    } 

GetByMsn是不正常的一个。我试图改变路线,但结果仍然是一样的。给出的solution 1solution 2不适用于我。

任何帮助将不胜感激。

回答

0
config.Routes.MapHttpRoute(
    name: "GetByMsn", 
    routeTemplate: "api/{controller}/{action}/{msn}", 
    defaults: null, 
    constraints: new { msn = @"^[a-z]+$" } 

在上述制约因素的字母,我只是将其更改为@"^[0-9]+$"并开始为我工作。

相关问题