在ASP.NET中,我使用的是.NET 4.5.1和nuget软件包System.IdentityModel.Tokens.Jwt 5.0.0
我不明白的是,为什么命名空间在Microsoft和System之间混合.
例如:
var tokenReader = new JwtSecurityTokenHandler(); tokenReader.Validatetoken(token,new TokenValidationParameters() { ValidateAudience = false },out validatedToken);
主要的JwtSecurityTokenHandler位于System.IdentityModel.Tokens.Jwt命名空间中,但TokenValidationParameters类及其依赖项位于Microsoft.IdentityModel.Tokens命名空间中,并且可能与System.IdentityModel.Tokens命名空间中的类似类相冲突.
这是设计还是这是一个版本不匹配的可能标志?
解决方法
nuget System.IdentityModel.Tokens.Jwt 4.0.2
VS
nuget System.IdentityModel.Tokens.Jwt 5.0
你会看到5.0有一个依赖
Dependencies
.NETFramework 4.5.1
Microsoft.IdentityModel.Tokens (>=5.0.0)
那4.0没有.其实没有以前的版本.
微软正在重构架构,使其重量更轻.在一个ASP.NET的大小的框架中,你将有很多功能冗余.
为了使WIF更轻,同时保持向后兼容,决定从System.IdentityModel.Tokens.Jwt中的库中删除冗余功能,不再依赖于System.IdentityModel.Tokens,而是依赖于Microsoft.IdentityModel.Tokens.不幸的结果之一是两层暴露了相同的方法.
原文地址:https://www.jb51.cc/csharp/93421.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。