Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NETCore3.1登录构造函数返回NULL。JsonApiDotNetCore没有从Post请求绑定登录属性_Asp.net_Asp.net Core_Json Api_Asp.net Core 3.1 - Fatal编程技术网

ASP.NETCore3.1登录构造函数返回NULL。JsonApiDotNetCore没有从Post请求绑定登录属性

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运行

我目前正在将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带有
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
标题(键/值):

  • 从3.0开始,ASP.NET核心使用
    System.Text.Json
    作为默认的Json序列化程序/反序列化程序,这需要严格的Json语法。此行为与旧的Newtonsoft.JSON不同

  • 实际上,即使Newtonsoft.JSON支持有效负载,它也不是有效的
    JSON

    {
        username: "test@test.com",
        password: "12345",
        rememberme: "false"
    }
    
    (JSON属性应该是以
    开头的字符串,请参见:

  • 如果您想像以前一样使用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"
    }