Api 如何修复不允许的405方法?

Api 如何修复不允许的405方法?,api,asp.net-core,.net-core,Api,Asp.net Core,.net Core,我一直在试图找到一个关于405方法不允许的问题的解决方案。有一个用于登录和注册的api。RegisterPost方法工作正常,但当我从邮递员发送凭证时,我得到405错误。我已经搜索了解决方案,是一个非常广泛的答案,但它并没有解决我的问题。我怎样才能修好它 CreateUser工作正常 [HttpPost] [Route("CreateUser")] public async Task<IActionResult> CreateUser([From

我一直在试图找到一个关于405方法不允许的问题的解决方案。有一个用于登录和注册的api。RegisterPost方法工作正常,但当我从邮递员发送凭证时,我得到405错误。我已经搜索了解决方案,
是一个非常广泛的答案,但它并没有解决我的问题。我怎样才能修好它

CreateUser工作正常

   [HttpPost]
        [Route("CreateUser")]
        public async Task<IActionResult> CreateUser([FromBody]RegisterVm register)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var userIdentity = _mapper.Map<User>(register);
            var result = await _userBusiness.CreateUser(userIdentity, register.Password).ConfigureAwait(true);
            if (!result.Succeeded) return new BadRequestObjectResult(Errors.AddErrorsToModelState(result, ModelState));

            return new OkObjectResult("Account created");
        }
[HttpPost]
[路由(“CreateUser”)]
公共异步任务CreateUser([FromBody]RegisterVm寄存器)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
var userIdentity=_mapper.Map(寄存器);
var result=await\u userBusiness.CreateUser(userIdentity,register.Password).ConfigureAwait(true);
如果(!result.successed)返回新的BadRequestObjectResult(Errors.AddErrorsToModelState(result,ModelState));
返回新的OkObjectResult(“创建的帐户”);
}
登录不起作用

[HttpPost]
    [Route("Login")]
    public async Task<IActionResult> Login([FromBody]LoginVm login)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var identity = await GetClaimsIdentity(login.Email, login.Password);
        if (identity == null)
        {
            return BadRequest(Errors.AddErrorToModelState("login_failure", "Invalid username or password.", ModelState));
        }

        var jwt = await Tokens.GenerateJwt(identity, _jwtFactory, login.Email, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented }).ConfigureAwait(true);
        return new OkObjectResult(jwt);
    }
[HttpPost]
[路线(“登录”)]
公共异步任务登录([FromBody]LoginVm登录)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
var identity=wait GetClaimsIdentity(login.Email,login.Password);
if(identity==null)
{
返回BadRequest(Errors.AddErrorToModelState(“登录失败”,“用户名或密码无效”,ModelState));
}
var jwt=wait Tokens.GenerateJwt(标识,_jwtFactory,login.Email,_jwtOptions,新的JsonSerializerSettings{Formatting=Formatting.Indented});
返回新的OkObjectResult(jwt);
}

老实说,只有两个原因:

  • 用户代理意外发送了错误的HTTP方法
  • 服务器只希望为请求的资源提供少数有效的HTTP方法,这些方法不包括您需要的内容 由于2显然不是答案,您需要确保您的呼叫者实际上是在发布数据,而不是使用GET、PUT、DELETE或任何其他动词


    调试和解决此问题的Microsoft文档:

    老实说,只有两个原因:

  • 用户代理意外发送了错误的HTTP方法
  • 服务器只希望为请求的资源提供少数有效的HTTP方法,这些方法不包括您需要的内容 由于2显然不是答案,您需要确保您的呼叫者实际上是在发布数据,而不是使用GET、PUT、DELETE或任何其他动词

    调试和解决此问题的Microsoft文档:

    您可以参考我的答案您可以参考我的答案