小编Qua*_*023的帖子

如何获取从 EF Core 查询返回的每种类型之一

我正在尝试获取按 desc 订购的客户的每种类型笔记之一的列表。在 SQL Server 中,我编写了以下查询

SELECT  
    note_id, st_id, note_type, signature_date 
FROM 
    (SELECT
         note_id, st_id, note_type, signature_date
         ROW_NUMBER() OVER (PARTITION BY note_type ORDER BY signature_dateDESC) AS row_num
     FROM 
         notes_log
     WHERE 
         cl_id = 1
         AND svce_type = 'service type 1'
         AND (note_type = 'note type 1' OR note_type = 'note type 2' OR note_type = 'note type 3')
     ) AS subquery
WHERE row_num = 1
ORDER BY signature_date DESC;
Run Code Online (Sandbox Code Playgroud)

这个查询工作正常,但是当将上面的查询转换为 Linq 时,我遇到了一些错误。这就是我所做的

 var lastNotes = await dbContext.Set<NotesLog>()
            .Where(s => s.ClientId == …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net asp.net-web-api entity-framework-core

6
推荐指数
1
解决办法
105
查看次数

将现有 API 项目迁移到 .NET 8 创建 JWT 令牌时出现错误

我刚刚将 ASP.NET Core 6 Web API 升级到 .NET 8(请注意,在 .NET 6 中一切都工作得很好),并且在创建 JWT 令牌时收到此错误:

System.ArgumentOutOfRangeException:'IDX10720:无法为算法'HS256'创建KeyedHashAlgorithm,密钥大小必须大于:'256'位,密钥具有'152'位。(参数'keyBytes')'

根据我对此错误的理解,似乎对秘密需要多长时间有一个新的要求,因此我使秘密更长,这适用于创建令牌,但在读取令牌时我收到一个全新的错误

System.ArgumentException:“IDX12723:无法解码有效负载”[“System.String”类型的 PII 已隐藏。有关更多详细信息,请参阅 https://aka.ms/IdentityModel/PII。]' 作为 Base64Url 编码字符串。

编辑:这是内部异常,也许这可以说明一些问题

JsonException:IDX11020:类型为“String”的 JSON 值无法转换为“JsonTokenType.Number”。读取:“System.IdentityModel.Tokens.Jwt.JwtPayload.iat”,位置:“52”,当前深度:“1”,消耗的字节数:“75”。

这里是否有一些处理 JWT 令牌的重大更改?

这是读取令牌的私有方法的代码

private User? _GetIdentity(HttpContext context, string token)
{
     try
     {
         var handler = new JwtSecurityTokenHandler();
         //var jsonToken = handler.ReadToken(token);
         var tokenS = handler.ReadToken(token) as JwtSecurityToken;//error happens here
         
         var user = new User
         {
             Id = tokenS.Claims.First(claim => claim.Type == ClaimTypes.NameIdentifier).Value,
             UserName = tokenS.Claims.First(claim => claim.Type == ClaimTypes.Name).Value,
             Email = tokenS.Claims.First(claim …
Run Code Online (Sandbox Code Playgroud)

c# jwt asp.net-core-webapi .net-8.0

5
推荐指数
1
解决办法
1427
查看次数