【发布时间】:2018-07-09 09:05:03
【问题描述】:
我有一个控制器类如下:
[Route("api/[controller]")]
public class ItemController : Controller
{
//GET api/item?employId=1009
[HttpGet]
public List<ItemViewModel> GetByEmployId([FromQuery]long employId) {
return new List<ItemViewModel>() {
new ItemViewModel(),
new ItemViewModel(),
new ItemViewModel()
};
}
// GET api/item?managerId=1009
[HttpGet]
public List<ItemViewModel> GetByManagerId([FromQuery]long managerId) {
return new List<ItemViewModel>();
}
}
对于第一个 URL (http://localhost/api/item?employId=1),web api 可以返回结果。但是对于第二个 URL (http://localhost/api/item?managerId=2),Web api 返回错误,HTTP 代码为 500。有人可以帮忙解释为什么会发生这种情况吗?谢谢。
由于某种原因,我无法使用 web api 项目进行调试。
【问题讨论】:
-
路由只匹配路径,不匹配查询。您应该应用 RESTful 并通过 url 表示您的资源。即
http://localhost/api/manager/2/item -
我同意曾。但这就是说,您的代码应该可以工作。 HTTP 500 表示错误。发生这种情况时您是否正在运行调试器?你看到异常了吗?此外,错误页面应该会告诉您一条错误消息。
-
@GabrielLuci 是正确的。您在此处发布的代码不会生成 500,因此唯一的假设是您发布的内容并不是您实际运行的代码的准确表示。也许你编辑太多了。无论如何,请创建一个完整、最小且可复制的样本。目前,您还没有。
-
嗨@Tseng,感谢您的建议。目前,我们无法将 URL 更改为 RESTful 样式,因为在不久的将来会有截止日期。
-
嗨@GabrielLuci,Web api实际上托管在Azure Service Fabric中(尽管它托管在本地集群中),出于某种原因,每次我启动Service Fabric项目(指的是Web api项目)在 Visual Studio 中使用“开始调试”时,VS 会抛出错误消息“发生致命错误......”。我们知道这个错误是由升级到 .NET Core 2.0 的项目引起的,但不知道为什么。这就是为什么我提到我无法调试它。
标签: asp.net-web-api asp.net-core asp.net-core-webapi asp.net-web-api-routing