use*_*560 8 azure azure-web-roles asp.net-mvc-4
我正在开发一个MVC4应用程序,它使用ADFS验证corp域用户,我编写了代码,我收到如下错误,我没有得到索赔?
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();
}
Run Code Online (Sandbox Code Playgroud)
您观察到的是混合使用.NET 3.5 WIF(Microsoft.IdentityModel)和WIF 4.0(System.IdentityModel和System.Security).我的建议是:
在执行此操作之前,请执行项目的备份副本,因为如果之前未执行此操作,则最终可能会出现大量错误而无法正常运行代码.但主要的想法是你必须摆脱所有和任何Microsoft.IdentityModel参考,你会很好.
| 归档时间: |
|
| 查看次数: |
9625 次 |
| 最近记录: |