asp.net mvc核心web api相同模式操作并非始终有效
我的控制器中有两种动作方法asp.net mvc核心web api相同模式操作并非始终有效,asp.net,asp.net-mvc,asp.net-core,Asp.net,Asp.net Mvc,Asp.net Core,我的控制器中有两种动作方法 [Route("users")] [ApiController] public class UsersController : ControllerBase { [HttpGet] [Route("username/{username}")] public async Task<IActionResult> GetUserByUsername(string username) { var response =
[Route("users")]
[ApiController]
public class UsersController : ControllerBase
{
[HttpGet]
[Route("username/{username}")]
public async Task<IActionResult> GetUserByUsername(string username)
{
var response = await _userService.GetUserByUsername(username);
return Ok(response);
}
[HttpGet]
[Route("search/{term}")]
public async Task<IActionResult> Search(string term)
{
var response = await _userService.Search(term);
return Ok(response);
}
}
[路由(“用户”)]
[ApiController]
公共类UsersController:ControllerBase
{
[HttpGet]
[路由(“用户名/{username}”)]
公共异步任务GetUserByUsername(字符串用户名)
{
var response=await\u userService.GetUserByUsername(用户名);
返回Ok(响应);
}
[HttpGet]
[路由(“搜索/{term}”)]
公共异步任务搜索(字符串术语)
{
var response=await\u userService.Search(术语);
返回Ok(响应);
}
}
这些是相同的模式。但有时我调用Search
action,它运行GetUserByUsername
action。为什么会发生这种情况
http://localhost/users/username/mmyusername =>调用GetUserByUsername
http://localhost/users/search/fra =>呼叫搜索
http://localhost/users/search/français=>只返回200,因为
http://localhost/users/search?term=fra =>调用GetUserByUsername
[FromUri]
属性,更新方法如下
[HttpGet]
[Route("search")]
public async Task<IActionResult> Search([FromUri] string term)
{
var response = await _userService.Search(term);
return Ok(response);
}
[HttpGet]
[路线(“搜索”)]
公共异步任务搜索([FromUri]字符串术语)
{
var response=await\u userService.Search(术语);
返回Ok(响应);
}
我也尝试过同样的方法,它在我的机器中工作。。你的请求url是什么?很奇怪。如果使用默认的routeTemplateapp.UseMvc()在WebAPI项目中,您应该在第四个请求url中得到404错误。Startup.cs中的相关路由设置是什么?