Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net mvc核心web api相同模式操作并非始终有效_Asp.net_Asp.net Mvc_Asp.net Core - Fatal编程技术网

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是什么?很奇怪。如果使用默认的routeTemplate
app.UseMvc()