Rest API在控制器上未找到任何操作

时间:2020-01-31 13:27:27

标签: c# .net

我会根据您的经验来帮助我解决问题。 我有以下代码:

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"

我尝试在[Route("api/[controller]")]之前添加public class FanController : ApiController,并且错误更改为:

No action was found on the controller 'Fan' that matches the request.

我试图在互联网上找到一些东西,但没有发现任何可以帮助我解决问题的东西。

1 个答案:

答案 0 :(得分:2)

您应该为每个操作定义路由,以便知道在调用特定API时将调用哪个路由。

使用[Route]标签来完成

    [ActionName("ImportAwb")]
    [HttpPost]
    [Route("Action1")]
    public async Task<object> ImportAwb([FromBody]JObject data) 
    {
...

然后从邮递员那里,用URL呼叫端点。 http://yoururl.com/Action1

(您的网址将是您为此控制器设置的路径...可能包含/ api或您可能已配置的路径。在该网址末尾添加/ Action1)

可以具有指向同一URL的多个路由,只要它们是不同的方法(发布,获取,删除,修补等)即可。

相关问题