You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7.0 Web应用登录/注册时415错误修复求助

修复.NET 7 Web应用登录/注册的415 Unsupported Media Type错误

常见原因及修复步骤

1. 请求Content-Type不匹配

  • 检查前端表单或AJAX请求的Content-Type是否与后端接口预期一致:如果后端接口依赖JSON格式,确保请求头为application/json;如果是表单提交,应为application/x-www-form-urlencoded或multipart/form-data。
  • 若使用Razor视图表单,确认表单标签没有错误设置enctype属性,无需额外配置时不要设为application/json。

2. 后端模型绑定配置问题

  • 检查AuthController的登录/注册Action参数绑定是否正确:
    • 接收JSON请求时,参数需用[FromBody]标记;接收表单数据时用[FromForm],避免混用导致绑定失败。示例代码:
      // 处理JSON格式登录请求
      [HttpPost("login")]
      public async Task<IActionResult> Login([FromBody] LoginModel model)
      {
          // 业务逻辑代码
      }
      
      // 处理表单格式注册请求
      [HttpPost("register")]
      public async Task<IActionResult> Register([FromForm] RegisterModel model)
      {
          // 业务逻辑代码
      }
      

3. 序列化/反序列化配置问题

  • 检查Program.cs中JSON序列化器配置,确保支持预期的媒体类型:
    builder.Services.AddControllersWithViews()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
            // 其他序列化规则配置
        });
    
  • 若前端发送XML格式请求,需在后端添加XML格式支持,否则会返回415错误。

4. 前端请求数据格式错误

  • 确认前端提交的数据结构与后端模型匹配:
    • 用AJAX发送JSON请求时,需将表单数据转为JSON字符串,示例:
      // 错误示例:直接传递FormData到JSON接口
      fetch('/auth/login', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: new FormData(form)
      });
      
      // 正确示例
      const formData = new FormData(form);
      const payload = Object.fromEntries(formData);
      fetch('/auth/login', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify(payload)
      });
      
    • 使用Razor表单时,确保表单字段名称与后端模型属性名一致(大小写敏感性取决于配置)。

5. 编码问题(针对你尝试的UTF-8/UTF-16调整)

  • 415错误通常与编码无关,除非请求头Content-Type指定了后端不支持的字符集(如application/json; charset=utf-16)。建议保持默认UTF-8,确保请求头字符集与后端配置一致。

结合你提供的代码文件排查重点

  • AuthController:检查Action的请求方法(HttpPost)、路由、参数绑定属性是否正确。
  • _LoginPartial/Layout:检查表单的method、action和enctype属性,确认表单提交指向正确的控制器Action,未错误设置enctype="application/json"。
  • User实体:确保实体类属性可正常序列化/反序列化,无无法处理的复杂嵌套类型。

内容的提问来源于stack exchange,提问作者mykhailo ryzhanovskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:32:37