![](/img/trans.png)
[英]Web Api 2 Routing Issue: “No action was found on the controller…”
[英]Rest API No action was found on the controller
我打电话给你的经验来帮助我解决一个问题。 我有这个代码:
public class FanController : ApiController
{
[ActionName("ImportAwb")]
[HttpPost]
public async Task<object> ImportAwb([FromBody]JObject data)
{
try
{
string username = data["username"].ToString();
string clientId = data["clientId"].ToString();
string userPass = data["userPass"].ToString();
string fisier = data["fisier"].ToString();
var responseString = await FanCourier.ImportAwbIntegrat(username, clientId, userPass, fisier);
return Ok(responseString);
}
catch (Exception ex)
{
return (ex);
}
}
如果我只留下一个这样的方法,我可以毫无问题地从 Postman 调用它,但是如果我尝试制作另一个方法,如下所示:
{
public class FanController : ApiController
{
[ActionName("ImportAwb")]
[HttpPost]
public async Task<object> ImportAwb([FromBody]JObject data)
{
try
{
string username = data["username"].ToString();
string clientId = data["clientId"].ToString();
string userPass = data["userPass"].ToString();
string fisier = data["fisier"].ToString();
var responseString = await FanCourier.ImportAwbIntegrat(username, clientId, userPass, fisier);
return Ok(responseString);
}
catch (Exception ex)
{
return (ex);
}
}
[ActionName("PrintareAwbHtml")]
[HttpPost]
public async Task<object> PrintareAwbHtml([FromBody]FanCourier fanCourier)
{
try
{
var responseString =
await fanCourier.PrintareAwbHtml(fanCourier);
return Ok(responseString);
}
catch (Exception ex)
{
return (ex);
}
}
邮递员电话的回复是:
"Multiple actions were found that match the request: \r\nImportAwb on type Courier.Rest.Controllers.FanController\r\nPrintareAwbHtml on type Courier.Rest.Controllers.FanController"
我试图在public class FanController : ApiController
之前添加一个[Route("api/[controller]")]
并且错误更改为:
No action was found on the controller 'Fan' that matches the request.
我试图在互联网上找到一些东西,但我发现没有任何帮助我的情况。
您应该为每个操作定义路由,以便您知道在调用特定 API 时将调用哪个。
使用[Route]
标签来完成
[ActionName("ImportAwb")]
[HttpPost]
[Route("Action1")]
public async Task<object> ImportAwb([FromBody]JObject data)
{
...
从邮递员那里,使用 url 调用您的端点。 http://yoururl.com/Action1
。
(YourUrl 将是您为此控制器设置的路径...可能包括 /api 或您可能已配置的内容。将 /Action1 添加到该 url 的末尾)
只要方法不同(post、get、delete、patch 等),您就可以有多个到同一个 URL 的路由。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.