我正在尝试一些非常基本的东西。我正试图从我的WebApi2静态服务获得响应,但不能。
我尚未编辑默认的WebApi(WebApiConfig.cs
)路由。
这是控制器
public class AboutController
{
[Route("api/about/{id:int}/{service1}/{service2}")]
public async Task<IHttpActionResult> Get(int accountId, string mainservice, string secondaryservice)
{
//logic
}
}
如果(在浏览器中)导航到http://localhost:58090/api/about
,则会收到错误消息The requested resource does not support http method 'GET'.
,我认为这是有道理的,因为它与路线(路径)不匹配。
如果我将路径更新为与签名匹配的内容,例如http://localhost:58090/api/about/1/a/b
,则会收到错误消息No action was found on the controller About' that matches the request.
即使我将[HttpGet]
添加到controller
,也没有什么区别。
作为一项健全性测试,我更新为
public class AboutController
{
public async Task<IHttpActionResult> Get()
{
//logic
}
}
,它可以完成预期的工作。我不知道为什么添加参数会使事情如此混乱。
我对做错了事感到迷茫
答案 0 :(得分:0)
路由必须与参数匹配
[Route("api/about/{id:int}/{service1}/{service2}")]
public async Task<IHttpActionResult> Get(int id, string mainService, string secondaryService)
{
上面的方法不起作用,因为它希望根据路由看到service1和service2。
按照以下示例进行更新
[Route("api/about/{id:int}/{service1}/{service2}")]
public async Task<IHttpActionResult> Get(int id, string service1, string service2)
{