我正在关注这个示例http://msdn.microsoft.com/en-us/library/ms998331.aspx但似乎在搞砸一些事情。
我不断得到
参数不正确。(来自 HRESULT 的异常:0x80070057 (E_INVALIDARG))
抛出错误的行:
第 30 行:if (Roles.IsUserInRole("TestRole"))
堆栈跟踪:
[ArgumentException:参数不正确。(来自 HRESULT 的异常:0x80070057 (E_INVALIDARG))] [TargetInvocationException:调用的目标已引发异常。] System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32culture, String[] namedParameters) +0 System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] 修饰符, CultureInfoculture, String[] namedParams) +337 System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfoculture) +36 System.Web.Security.AuthorizationStoreRoleProvider.CallMethod(Object objectToCallOn, String methodName, Object[] args) +183 System.Web.Security.AuthorizationStoreRoleProvider.GetClientContextFromName(字符串用户名)+167 System.Web.Security.AuthorizationStoreRoleProvider.GetClientContext(String userName) +70 System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUserCore(字符串用户名)+59 System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUser(字符串用户名)+72 System.Web.Security.RolePrincipal.IsInRole(字符串角色)+164 System.Web.Security.Roles.IsUserInRole(字符串用户名,字符串角色名称)+355 System.Web.Security.Roles.IsUserInRole(字符串角色名称)+19 _Default.ShowRoleMembership() 在 c:\projects\adamtest\Default.aspx.cs:30 _Default.Page_Load(Object sender, EventArgs e) 在 c:\projects\adamtest\Default.aspx.cs:24 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,对象 o,对象 t,EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送者,EventArgs e)+35 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+627
我从示例中复制的角色管理器配置
<roleManager
enabled="true"
cacheRolesInCookie="true"
defaultProvider="RoleManagerAzManADAMProvider"
cookieName=".ASPXROLES"
cookiePath="/"
cookieTimeout="30"
cookieRequireSSL="true"
cookieSlidingExpiration="true"
createPersistentCookie="false"
cookieProtection="All">
<providers>
<add name="RoleManagerAzManADAMProvider"
type="System.Web.Security.AuthorizationStoreRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral,
publicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AzManADAMServer"
applicationName="AzManDemo"/>
</providers>
</roleManager>