gpt4 book ai didi

asp.net-mvc-4 - 无法将 System.Security.Claims.ClaimsPrincipal 类型的对象强制转换为 Microsoft.IdentityModel.Claims.IClaimsPrincipal 类型

转载 作者:行者123 更新时间:2023-12-02 21:15:50 32 4
gpt4 key购买 nike

我正在开发一个 MVC4 应用程序,该应用程序使用 ADFS 对公司域用户进行身份验证,我已经编写了代码,但收到如下错误,我是否没有收到 claim ?

System.InvalidCastException:无法将“System.Security.Claims.ClaimsPrincipal”类型的对象强制转换为“Microsoft.IdentityModel.Claims.IClaimsPrincipal”类型。

    public ActionResult Index()
{
try
{

IClaimsPrincipal principal = (IClaimsPrincipal)Thread.CurrentPrincipal;
IClaimsIdentity identity = (IClaimsIdentity)principal.Identity;
if (String.IsNullOrEmpty(identity.Claims[0].Value.Split('@')[0]))
{
ViewData["Message"] = string.Format("You are email is :{0}", identity.Claims[0].Value.Split('@')[0]);

}
else
{
ViewData["Message"] = "You are not getting any claims";
}
}
catch (Exception ex)
{
ViewData["Message"] = "Something wrong.";
}
return View();
}

最佳答案

您观察到的是混合 .NET 3.5 WIF (Microsoft.IdentityModel) 和 WIF 4.0 (System.IdentityModel & System.Security) 的结果。我的建议是:

  1. 删除对 Microsoft.IdentityModel 的引用.* 项目中的程序集
  2. 添加对 System.IdentityModel 的引用& System.IdentityModel.Services 程序集
  3. 修复 using 语句
  4. 修复 Web.Config 中对 Microsoft.IdentityModel 的引用

在执行此操作之前,请先备份您的项目,因为如果您以前没有这样做过,您可能会遇到很多错误并且无法运行代码。但主要的想法是,您必须摆脱所有和任何 Microsoft.IdentityModel 引用,这样您就可以了。

关于asp.net-mvc-4 - 无法将 System.Security.Claims.ClaimsPrincipal 类型的对象强制转换为 Microsoft.IdentityModel.Claims.IClaimsPrincipal 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304869/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com