0
我不断收到错误Key cannot be null. Parameter name: key
。它看起来像失去了authCookie,但Request.IsAuthenticated
仍然设置为true。这让我疯狂。如果用户没有登录,我也可以处理这个错误。但是错误仍然出现。认证错误:密钥不能为空。参数名称:密钥
它失败的地方就在这里脱颖而出例如
@if (User.IsInRole("Admin"))
{
<button class="button-green white">Save</button>
}
但如果看看有哪些用户拥有的属性还在说IsAuthenticated = true
的名称和作用也是正确的,车票仍然有效。
这是调用堆栈
System.ArgumentNullException was unhandled by user code
HResult=-2147467261
Message=Key cannot be null.
Parameter name: key
Source=System
ParamName=key
StackTrace:
at System.Collections.Specialized.HybridDictionary.get_Item(Object key)
at System.Web.Security.RolePrincipal.IsInRole(String role)
at ASP._Page_Views_Admin_EditText_cshtml.Execute() in d:\SubVersion\Oline\Project1\Source\Oline.Portal\Views\Admin\EditText.cshtml:line 78
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.StartPage.RunPage()
at System.Web.WebPages.StartPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
InnerException:
这是我的自定义RoleProvier
public override string[] GetRolesForUser(string username)
{
var user = (string)HttpContext.Current.Session["UserRoles"];
var ret = new[] { user };
return ret;
}
你在'EditText.cshtml'视图中有78行吗? – 2013-02-18 13:03:57
你确定你有一个身份集?你有一个自定义的会员供应商? – 2013-02-18 13:05:47
@Darin。第78行是我的问题中的第一个代码示例。 BoaS:是的,我可以看到我的用户身份。我没有一个自定义的成员资格提供者。但我有一个CustomRoleprovider。这是最后一个例子。 – mortenstarck 2013-02-18 13:48:38