WebApi 500内部服务器错误

时间:2015-08-07 10:07:28

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

我正在尝试使用WebApi并使用两种方法创建了一个控制器。

我首先使用以下方法开始:

    [HttpGet]
    [Route("car/{registration}")]
    public object GetCarByRegistration(string registration) {
        return null;
    }

调试时,我在return null;测试的网址http://localhost:51245/api/car/yw25jdk上设置了一个断点,该工作正常,可视工作室停在断点处,registration变量在网址中的值相同。

但是当我添加以下方法时:

    [HttpGet]
    [Route("car/{serial}")]
    public object GetCarBySerial(string serial) {
        return null;
    }

第一个网址停止工作,我开始获得500 - Internal Server Error。如果我采用第二种方法,那么第一种方法再次起作用。

我无法理解为什么第二种方法会破坏第一种方法。

有人能解释一下吗?

2 个答案:

答案 0 :(得分:7)

那很好,因为当你转到网址http://localhost:51245/api/car/yw25jdk时,ASP不知道使用哪种方法,因为两种方法都说他们希望将字符串作为参数。

ASP如何知道/car/{registration}/car/{serial]之间的区别,因为它们都是字符串?

您应该更改它们的路线,以使其正常工作

答案 1 :(得分:0)

将其放入您的WebApiConfig:

 config.MapHttpAttributeRoutes();

否则WebApi会忽略Route属性。如果没有不同的路由签名,当ApiController收到 GET 请求时,它会自动查找以' Get'开头的第一个操作。 - 这就是当你删除第二种方法

时它的工作原理