【问题标题】:Unable to run multiple GET methods in single controller无法在单个控制器中运行多个 GET 方法
【发布时间】:2017-09-26 12:34:53
【问题描述】:

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

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 对我不起作用。

任何帮助将不胜感激。

【问题讨论】:

    标签: mysql asp.net-mvc rest visual-studio-2015 asp.net-web-api2


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

    在上面的约束是字母的,我只是把它改成@"^[0-9]+$",它就开始为我工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多