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

.NET Core 2.0中System.PlatformNotSupportedException报错求助

问题修复方案

问题根源

你的Login方法返回匿名对象时,permissions = _manager.GetUserPermissions(user.Email)没有添加await关键字,导致实际传递给Ok()的是一个Task<IEnumerable<Permission>>任务对象,而非权限集合本身。由于Task类型实现了ISerializable接口,而.NET Core 2.0中System.Threading.ExecutionContext.GetObjectData方法不支持序列化操作,Newtonsoft.Json尝试序列化这个Task对象时就会抛出PlatformNotSupportedException。

修复步骤

在Login方法中,对GetUserPermissions的调用添加await,确保获取到实际的权限集合:

public async Task<IActionResult> Login([FromBody]AuthRequest itemRequest)
{
    try
    {
        var result = await _manager.ValidateUserAsync(itemRequest.Email, itemRequest.Password);

        if (result.Succeeded)
        {
            var user = await _manager.GetUserAsync(itemRequest.Email);                  

            return Ok(new
            {
                name = user.name,
                administrator = user.administrator,
                permissions = await _manager.GetUserPermissions(user.Email) // 添加await关键字
            });
        }

        return Unauthorized();
    }
    catch (Exception e)
    {
        return StatusCode(500);
    }
}

验证说明

修改后,返回的匿名对象中permissions会是实际的IEnumerable<Permission>集合,Newtonsoft.Json可以正常序列化该集合,不会再触发Task对象的ISerializable序列化逻辑,即可解决报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:15:42