ASP.NETCore3.1登录构造函数返回NULL。JsonApiDotNetCore没有从Post请求绑定登录属性
我目前正在将ASP.NET核心Web API从2.2升级到3.1。我正在通过邮递员测试控制器,以确保一切正常。事实并非如此。当我第一次尝试登录时,我通过Postman将HttpPost请求中的有效用户名和密码发送到web API。但是,当它调用登录构造函数时,返回NULL,这意味着模型不包含我刚才传递的用户名和密码。有人知道为什么会这样吗 注1:我相信我通过PostMan提交的Post请求是正确的,因为我可以成功地向.NET Core 2.2 web API提交相同的请求 注2:WebApi运行的.NET Core 3.1带有ASP.NETCore3.1登录构造函数返回NULL。JsonApiDotNetCore没有从Post请求绑定登录属性,asp.net,asp.net-core,json-api,asp.net-core-3.1,Asp.net,Asp.net Core,Json Api,Asp.net Core 3.1,我目前正在将ASP.NET核心Web API从2.2升级到3.1。我正在通过邮递员测试控制器,以确保一切正常。事实并非如此。当我第一次尝试登录时,我通过Postman将HttpPost请求中的有效用户名和密码发送到web API。但是,当它调用登录构造函数时,返回NULL,这意味着模型不包含我刚才传递的用户名和密码。有人知道为什么会这样吗 注1:我相信我通过PostMan提交的Post请求是正确的,因为我可以成功地向.NET Core 2.2 web API提交相同的请求 注2:WebApi运行
JsonApiDotNetCore
4.0.0-alpha4,而该模型包含在一个单独的.NET标准2.1项目中,带有JsonApiDotNetCore
3.1(我无法升级到4.0.0-alpha4,因为它不支持.NET标准2.1)。这可能是原因吗
登录控制器
using Test_Model.Users;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;
namespace Test_WebApi.Controllers.Tokens
{
public class TokensController : ControllerBase
{
public TokensController(
IConfiguration objConfig,
ILogger<TokensController> objLogger,
IServiceProvider objServiceProvider)
: base(objConfig, objLogger, objServiceProvider)
{ }
[AllowAnonymous]
[HttpPost("/clients/login")]
public async Task<IActionResult> LoginAsync([FromBody] Login objLogin)
{
return new JsonResult(objLogin);
}
}
}
jsonapidotnet没有填充属性
更新
邮递员发信要求:
{
username: "test@test.com",
password: "12345",
rememberme: "false"
}
邮递员职位设置:
Body = Raw
标题(键/值):
System.Text.Json
作为默认的Json序列化程序/反序列化程序,这需要严格的Json语法。此行为与旧的Newtonsoft.JSON不同JSON
:
{
username: "test@test.com",
password: "12345",
rememberme: "false"
}
(JSON属性应该是以“
开头的字符串,请参见:
- 将包引用添加到
- 通过
services.AddControllers().AddNewtonsoftJson(…);
你能展示一下邮递员发送的请求吗?@itminus发布的更新。我创建了一个模型库(使用JsonApiDotNetCore 3.1针对.NET标准)还有另一个使用JsonApiDotNetCore 4.0.0-alpha4的web项目。但是,你的负载对我来说很好。有没有复制相同问题的演示?@itness不方便-这是一个大项目。你能发布你创建的模型让我看一下吗?我想你的更小。当然,看到了,谢谢你的解释。我将从
NewtonSoftJson
迁移到System.Text.Json
这是一个非常有用的答案。我搜索了几天。这真的很有帮助,我在升级2.1到3.1时也面临同样的问题
Accept / application/json
Content-Type / application/json
{
username: "test@test.com",
password: "12345",
rememberme: "false"
}