我与代码第一次的EntityFramework(工作version="6.1.0")和EntityFramework.Extended(版本="6.1.0.96,在从目前的最新版本在这里,
该DbContext暴露的DbSets方式一样访问:
var set = ctx.Set<MyEntity>();
Run Code Online (Sandbox Code Playgroud)
今天我决定尝试EntityFramework.Extended库的Future Queries,很快就结束了,不知道如何继续.
以下是示例代码:
using (var ctx = new MyDbContext())
{
var u = ctx.Set<User>().Future();
var c = ctx.Set<Country>().Future();
var users = u.ToList();
}
Run Code Online (Sandbox Code Playgroud)
关于Future()文档,我应该只向DB Future()提供一个查询,这是该方法提供的.该查询应该启动,u.ToList();但会发生的是我得到这样的错误:
JIT编译器遇到内部限制.
堆栈跟踪潜水告诉我:
在EntityFramework.Future.FutureQueryBase 1.GetResult()
在EntityFramework.Future.FutureQuery 1.GetEnumerator()
在System.Collections.Generic.List 1..ctor(IEnumerable 1 collection)
在System.Linq.Enumerable.ToList [TSource](IEnumerable 1 source)
at App.Program.Main(String [] args)在c:\ Users\...\App\Program.cs:第25行
我真的不知道我错过了什么.我检查了,我ConnectionString已经MultipleResultSets设定TRUE.
我已经使用早期的版本发布测试了这个,EF.Exteneded但发生了同样的错误.
任何想法都会有很大帮助.
我正在尝试验证使用https://jwt.io上本地运行的KeyCloak身份验证提供程序生成的 HS256 JWT 令牌。
KeyCloack 实例正在我的本地计算机上的 Docker 容器内运行。我已经应用了与此答案中描述的几乎相同的步骤(相反,它应用了 RS 算法,并且按所述工作):https ://stackoverflow.com/a/55002225/1534753
我的验证过程非常简单:
1.) 从我的本地 docker KeyCloak 实例请求令牌(使用 Postman): POST 请求http://localhost:8080/auth/realms/dev/protocol/openid-connect/token
2.) 复制 jwt.io 的“Encoded”部分中的令牌内容
3.) 我验证标头和有效负载是否符合预期且正确
4.) 我从 KeyCloak 实例管理仪表板复制客户端密钥,您可以在下图中看到参考:
5.) 我将秘密粘贴到 jwt.io 上的“验证签名”部分,并且“编码”令牌部分发生更改,因此导致无效签名和无效(即不同)令牌。
我的核心问题是我在这里缺少什么?为什么当我应用预期的秘密时令牌会发生变化!?我是否应用了来自客户的正确秘密?如果我正确理解 JWT 基础设施和标准,那么如果秘密(应用了预期的算法)有效,它应该保持不变。我的理由是,KeyCloak 上的 JWT 创建是特定的。我还没有接触过 KeyCloak 上的 HS256 算法提供程序,一切都按照使用 KeyCloak 的 docker 安装指南默认使用。与令牌和算法相关的设置设置为使用 HS256,并且算法按照 JWT 标头部分中的预期正确指定,可以在将编码令牌粘贴到 jwt.io 页面后进行验证。
我需要这个来工作,因为我试图在 .NET Core Web API 应用程序中应用相同的 JWT 验证过程。我在那里遇到了整个问题,即在导致无效签名并最终导致异常的方法System.IdentityModel.Tokens.JWT内部。JwtSecurityTokenHandle.ValidateSignature
顺便说一句,我正在使用 Postman 及其授权功能访问令牌,配置如下图所示:
还有一个附注是我有一个用户“John”,它属于我的“Demo”领域。我使用他向 KeyCloak 请求访问令牌。