Asp.net mvc 4 身份验证错误:密钥不能为空。参数名称:key

Asp.net mvc 4 身份验证错误:密钥不能为空。参数名称:key,asp.net-mvc-4,Asp.net Mvc 4,我不断得到错误键不能为空。参数名称:键。它看起来好像失去了authCookie,但是请求.IsAuthenticated仍然设置为true。这快把我逼疯了。另外,如果用户未登录,我已经准备好处理。但是错误仍然出现 这里有一个失败的地方 @if (User.IsInRole("Admin")) { <button class="button-green white">Save</button> } 这是我的定制角色扮演者 publ

我不断得到错误
键不能为空。参数名称:键
。它看起来好像失去了authCookie,但是
请求.IsAuthenticated
仍然设置为true。这快把我逼疯了。另外,如果用户未登录,我已经准备好处理。但是错误仍然出现

这里有一个失败的地方

 @if (User.IsInRole("Admin"))
      {
        <button class="button-green white">Save</button>
      }
这是我的定制角色扮演者

public override string[] GetRolesForUser(string username)
{
  var user = (string)HttpContext.Current.Session["UserRoles"];
  var ret = new[] { user };
  return ret;
}

问题的解决方案是,这一节
var user=(string)HttpContext.Current.Session[“UserRoles”],则变为空。特别的是,我回到了fort,在VisualStudio2012中改变了一些事情。感谢您的建议:)

您在
EditText.cshtml
视图的第78行有什么内容?您确定有标识集吗?你有定制的会员服务提供商吗?@Darin。第78行是我问题中的第一个代码示例。是的,我可以看到我的用户身份。我没有定制的会员服务提供商。但我有一个客户角色提供商。这是最后一个示例。看起来您正在将角色信息存储在会话变量中。您确定会话的设置正确并且返回了一些内容吗?
public override string[] GetRolesForUser(string username)
{
  var user = (string)HttpContext.Current.Session["UserRoles"];
  var ret = new[] { user };
  return ret;
}