'Get error swagger when change method private to public

This is my code in UserController and it runs well.

private Identifier GetCurrentUser()
        {
            var identity = HttpContext.User.Identity as ClaimsIdentity;
            if (identity != null)
            {
                var userClaims = identity.Claims;
                return new Identifier
                {
                    Id = userClaims.FirstOrDefault(o => o.Type == ClaimTypes.NameIdentifier)?.Value,
                    Role = userClaims.FirstOrDefault(o => o.Type == ClaimTypes.Role)?.Value,
                };
            }
            return null;
        }

enter image description here However when I change this method from private to public I got this error with swagger. enter image description here I do not understand why I get this error. Please tell me the reason and teach me how to fix it. Thank for your attention



Solution 1:[1]

Like it has been pointed out in the comment, you have conflicting route names with api/GetUsers/{search} and api/GetUsers/{id}. It becomes difficult for the compiler to figure out which one you really want to use.

I recommend you change the GetUserById action method to this form so there's a distinction between the two routes.

[HttpGet("\GetUser\{id}")]
[Authorize(Roles = "Administrator,Staff")]
public IActionResult GetUser(string id)

Alternatively you could place the search term for GetUsers in the same class as the paginationFilter like this

public class SearchAndPagination
{
    public PaginationFilter paginationFilter {get;set;}
    public string search {get;set;}
}

Then pass as request body to GetUsers action

[HttpGet]
[Authorize(Roles = "Administrator,Staff")]
public IActionResult GetUsers([FromBody] SearchAndPagination paginationFilter)
{
    var users = _userRepository.GetUsers(paginationFilter.paginationFilter, paginationFilter.search);
    ...
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1