首页 > 解决方案 > 状态码:415 MVC 中不支持的媒体类型

问题描述

我在实践中第一次看到这个错误。我的项目是.Net Core 2.1 MVC。当我尝试登录时抛出错误。没有什么特别的。简单的AccountController和像往常一样的登录表单。错误:状态码:415;不支持的媒体类型控制器:

[HttpPost]
    [AllowAnonymous]
    public async Task<IActionResult> Login([FromForm]LoginViewModel loginViewModel)
    {
        if (!ModelState.IsValid)
        {
            return View(loginViewModel);
        }

        IdentityUser user = null;

        if (loginViewModel.EmailOrUsername.Contains("@"))
        {
            user = await _userManager.FindByEmailAsync(loginViewModel.EmailOrUsername);
        }
        else
        {
            user = await _userManager.FindByNameAsync(loginViewModel.EmailOrUsername);
        }

        if (user != null)
        {
            var result = await _signInManager.PasswordSignInAsync(user, loginViewModel.Password, false, false);
            if (result.Succeeded)
            {
                return Redirect(loginViewModel.ReturnUrl ?? "/");
            }
        }

        ModelState.AddModelError("", "Invalid Username or Password");
        return View(loginViewModel);
    }

形式:

<form asp-action="login" asp-controller="account" method="post">
        <input type="hidden" asp-for="ReturnUrl" />
        <div class="form-group">
            <label asp-for="EmailOrUsername"></label>
            <input asp-for="EmailOrUsername" class="form-control" />
            <span asp-validation-for="EmailOrUsername"></span>
        </div>
        <div class="form-group">
            <label asp-for="Password"></label>
            <input asp-for="Password" class="form-control" />
            <span asp-validation-for="Password"></span>
        </div>
        <button type="submit" class="btn buy-now-btn">Login</button>
        <a asp-action="register" asp-route-returnUrl="@Model.ReturnUrl" class="float-right">Don't have an account? Register here!</a>
    </form>

最后是模型:

public class LoginViewModel
{
    [Required]
    [Display(Name = "Email/Username")]
    public string EmailOrUsername { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    public string ReturnUrl { get; set; }
}

标签: .netasp.net-mvc

解决方案


尝试将 Content-Type Header 添加到您的请求中


推荐阅读