【问题标题】:Getting HTTP 404 not found error while invoking action method调用操作方法时出现 HTTP 404 未找到错误
【发布时间】:2018-06-19 10:26:54
【问题描述】:

请在下面找到我的应用程序的详细信息

public class CartController : ApiController
{
    [HttpGet]
    public Response<CartDto> GetById(Guid customerId)
    {
        ....
    }
}

WebApiConfig.cs

routeTemplate: "api/{controller}/{action}/{id}",

网址

http://localhost:50300/api/Cart/GetById/customerId=5D5020DA-47DF-4C82-A722-C8DEAF06AE23

当我使用上述 URL 调用操作方法时,我得到 HTTP 404 Not Found。出了什么问题?

【问题讨论】:

  • customerId=5D5020DA-47DF-4C82-A722-C8DEAF06AE23改成?customerId=5D5020DA-47DF-4C82-A722-C8DEAF06AE23是否有效
  • 是的,你是对的。在url中customerId之前将斜杠更改为问号后,它工作正常。谢谢你的回答。

标签: c# asp.net-web-api2 asp.net-web-api-routing


【解决方案1】:

网址

 api/Cart/GetById/customerId=5D5020DA-47DF-4C82-A722-C8DEAF06AE23

且动作参数名称customerId与路由模板不匹配

api/{controller}/{action}/{id}

更新操作

[HttpGet]
public Response<CartDto> GetById(Guid id) {
    //....
}

并且 URL 应该遵循模板

api/Cart/GetById/5D5020DA-47DF-4C82-A722-C8DEAF06AE23

【讨论】:

    【解决方案2】:

    您的 URL 的主要问题是缺少 ? 来指示您的查询字符串的开头:

    http://localhost:50300/api/Cart/GetById/?customerId=5D5020DA-47DF-4C82-A722-C8DEAF06AE23
    

    ? 之后的所有内容都在查询字符串中,并按名称匹配(即customerId 与您的同名参数匹配)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多