【问题标题】:Roles.GetRolesForUser throws exception Object reference not set to an instance of an objectRoles.GetRolesForUser 抛出异常对象引用未设置为对象的实例
【发布时间】:2013-11-17 09:13:54
【问题描述】:

我有一个使用 Roles.GetRolesForUser 方法的 ASP.NET 应用程序。应用程序中的调用工作正常,但是当我在引用的库中使用相同的调用时,它会引发异常。异常消息是:

对象引用未设置为对象的实例

奇怪的是,当我检查角色时,它被实例化了。

我的代码如下所示:

var roles = Roles.GetRolesForUser(userName);

有什么建议吗?

【问题讨论】:

  • 好吧,如果你在引用的库中调用 Roles.GetRolesForUser,你必须按如下方式使用它: var Roles = Roles.Provider.GetRolesForUser(userName);注意区别,在角色上显式调用提供者
  • 将此添加为答案并将其标记为已接受,以便其他查找此内容的用户更容易。
  • NullReferenceException 的几乎所有情况都是相同的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。
  • @JohnSaunders 你是对的,但这是非常特殊的状态,这里的例外是 .NET Bug

标签: c# asp.net asp.net-mvc nullreferenceexception roles


【解决方案1】:

注意:根据 OP 本人的评论,这个答案解决了他的问题。

这是.NET Framework bug
要解决此问题,请致电:

string[] roles = Roles.Provider.GetRolesForUser(userName);

这里是一个非常similar question

【讨论】:

  • 我的原因是 MSDTC 没有运行。即使 MSDTC 仍处于关闭状态,上述修复也使代码正常工作。
【解决方案2】:

在 MVC 5 中,您可以使用 GetRoles(Id) 方法获取用户角色。
但是,在使用GetRoles 之前,您必须先创建userManager 对象:

var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));

var d = userManager.GetRoles(5);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多