Asp.Net核心WEB API错误404调用方法

Asp.Net Core WEB API error 404 calling method

我正在尝试在网络上创建一个额外的 Get 方法 api 但 return 是 404(未找到方法)。

在 Core 之前的 API 中,我创建了这样的方法:

[HttpGet]
[Route("api/MyNewMethodName")]
public object MyNewMethodName(string parameter1)
{}

电话:

myURL/api/MyNewMethodName?parameter1=somestring

在我的控制器定义中,我有:

[Produces("application/json")]
[Route("api/MyController")]
public class MyController : Controller

对于某些代码,我收到了 404 错误。

请问有什么问题吗?

您的控制器已定义路由。因此,对于您的操作方法,它将是为控制器定义的路由前缀 + 操作方法的路由模式。这意味着,使用您当前的代码,它将适用于以下请求

yourBaseUrl/api/MyController/api/MyNewMethodName?parameter1=somestring

这里api/MyController部分来自控制器级别的路由定义,api/MyNewMethodName部分来自操作方法级别。

根据需要在控制器或方法级别修复路由前缀。例如,如果您希望您的操作方法响应 /api/MyNewMethodName?parameter1=somestring。只需删除控制器级别的 Route 装饰器即可。

[Produces("application/json")]
public class MyController : Controller
{
    [HttpGet]
    [Route("api/MyNewMethodName")]
    public object MyNewMethodName(string parameter1)
    {
        return "Sample dummy response : "+parameter1;
    }
}

请记住,删除控制器级路由可能会破坏该控制器中其他操作方法的路由。如果你想保持现有路由不变(使用控制器级路由属性),你可以更新你的操作方法级路由模式以开始 /

[Produces("application/json")]
[Route("api/MyController")]
public class MyController : Controller
{
    [HttpGet]
    [Route("/api/MyNewMethodName")]
    public object MyNewMethodName(string parameter1)
    {
        return "Some test"+parameter1;
    }
    [HttpGet]
    [Route("SecondMethod")]
    public object SecondMethod(string parameter1)
    {
        return "SecondMethod : "+parameter1;
    }
}

[HttpGet]

[路线(api/[控制器]/MyNewMethodName")]

public 对象 MyNewMethodName(字符串参数 1) {

}

尝试声明上述格式,这对我有用。