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:

これは私のカスタム RoleProvider です

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

1 に答える 1

0

問題の解決策は、このセクションvar user = (string)HttpContext.Current.Session["UserRoles"];が null になることでした。特別な場合、私は戻って砦に戻り、Visual Studio 2012 で物事を変更します。提案をありがとう:)

于 2013-02-23T23:30:38.627 に答える