gpt4 book ai didi

c# - 安装 .NET 4.5 后的 ClaimsIdentity NullReferenceException

转载 作者:行者123 更新时间:2023-11-30 13:01:31 25 4
gpt4 key购买 nike

我有一个在 vs2010 中开发的现有 .Net 4 解决方案,它使用用于定义当前请求的用户的 IIdentity 实现。我现在想使用 vs2012 继续它的开发。

我在 vs2012 中打开了解决方案,并将属性中的目标框架设置为 .Net 4。但是,当我运行该解决方案时,当 Web 服务器反序列化 GenericIdentity 对象时出现异常。异常发生在

at System.Security.Claims.ClaimsIdentity.<get_Claims>d__0.MoveNext()
at System.Security.Principal.GenericIdentity.OnDeserializedMethod
(StreamingContext context)

异常的原因好像是属性Claims没有初始化

我已经知道的:

  1. .Net 4.5 在目标机器上更新 .Net 4,而不是并行安装。

  2. GenericIdentity 现在派生自 .Net 4.5 中的新类 ClaimsIdentity

  3. 将目标框架设置为 .Net 4 意味着虽然代码仍在使用 .NET 4.0 运行,但在幕后使用 4.5 实现,即您无法在 visual studio 对象浏览器中看到层次结构,但调试器和反射器显示推导。

  4. GenericIdentity.OnDeserializedMethod 在不检查 null 的情况下访问 ClaimsIdentity Claims 属性,导致 NullReferenceException

一个solution我遇到了让我的自定义身份对象继承自 System.MarshalByRefObject 的问题,但问题是自定义身份对象是由“单点登录”.dll 提供的,它在我们组织的所有系统中使用。这意味着我无法访问它来更改其继承继承权。

这个问题是否有替代解决方案或解决方法?

最佳答案

此问题仅在使用内置 Visual Studio 服务器时出现,并且作为一个团队,我们在本地使用 IIS 来运行我们的开发站点,我们将接受它,因为我在上面花费了太多时间现在。

问题似乎与 appDomain 转换后的对象序列化和反序列化有关,但我没有时间进一步调查。

更新:.NET 4.5.1 不会出现此问题

关于c# - 安装 .NET 4.5 后的 ClaimsIdentity NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19091534/

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