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)
{
}
尝试声明上述格式,这对我有用。
我正在尝试在网络上创建一个额外的 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) {
}
尝试声明上述格式,这对我有用。