ldiego08
01-02-2010, 07:11 PM
Ok, sorry for the attention called post title. But i'm really in some desperate situation..
So, I'm currently developing a web application in Visual Studio 2008. I have set ActiveDirectoryMembershipProvider as the default membership provider and AuthorizationRoleProvider as the default role provider. All works perfectly.. I can add users to my site. UNTIL I try the method GetRolesForUser(string username).
This method works just fine with firstname.lastname@domain accounts.. but fails horribly when the user account is firstname.lastname.somethingelse@domain. It first throws an exception as follows:
System.Reflection.TargetInvocationException was unhandled by user code
Message="Exception has been thrown by the target of an invocation."
Source="mscorlib"
StackTrace:
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
at System.Web.Security.AuthorizationStoreRoleProvider.CallMethod(Object objectToCallOn, String methodName, Object[] args)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContextFromName(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContext(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUserCore(String username)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUser(String username)
at System.Web.Security.Roles.GetRolesForUser(String username)
at DAOSetup.DataAccess.Interop.ActiveDirectoryController.GetUserRoles(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\ActiveDirectoryController.cs:line 124
at DAOSetup.DataAccess.Interop.UserDataController.RemoveUserAndDeauthorize(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\UserDataController.cs:line 101
at DAOSetup.Private.Administration.RemoveUser.Page_Load(Object sender, EventArgs e) in ..\PersistenceSetup\DAOSetup\Private\Administration\RemoveUser.aspx.cs:line 35
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException: System.Runtime.InteropServices.COMException
Message="The specified domain either does not exists or coulld not be contacted. (Exception from HRESULT: 0x8007054B)"
Source=""
ErrorCode=-2147023541
InnerException:
Ok, now.. after I try the method a second time, I get a different exception..
System.Reflection.TargetInvocationException was unhandled by user code
Message="Exception has been thrown by the target of an invocation."
Source="mscorlib"
StackTrace:
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
at System.Web.Security.AuthorizationStoreRoleProvider.CallMethod(Object objectToCallOn, String methodName, Object[] args)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContextFromName(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContext(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUserCore(String username)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUser(String username)
at System.Web.Security.Roles.GetRolesForUser(String username)
at DAOSetup.DataAccess.Interop.ActiveDirectoryController.GetUserRoles(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\ActiveDirectoryController.cs:line 124
at DAOSetup.DataAccess.Interop.UserDataController.RemoveUserAndDeauthorize(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\UserDataController.cs:line 101
at DAOSetup.Private.Administration.RemoveUser.Page_Load(Object sender, EventArgs e) in..PersistenceSetup\DAOSetup\Private\Administration\RemoveUser.aspx.cs:line 35
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException: System.Runtime.InteropServices.COMException
Message="The Active Directory property could not be found in the cache.\r\n"
Source="Active Directory"
ErrorCode=-2147023541
InnerException:
This is really gettin out of my nerves.. I thing is something related to the AD naming conventions, because with firstname.lastname@domain it works JUST FINE. Also, my providers are set as follows:
<roleManager
enabled="true"
cacheRolesInCookie="true"
defaultProvider="AzManRoleProvider"
cookieName=".ASPXROLES"
cookiePath="\"
cookieTimeout="30"
cookieRequireSSL="true"
cookieSlidingExpiration="true"
createPersistentCookie="false"
cookieProtection="All">
<providers>
<add name="AzManRoleProvider"
type="System.Web.Security.AuthorizationStoreRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, publicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AzManPolicyStore"
applicationName="<name>"/>
</providers>
</roleManager>
<identity impersonate="true"/>
<membership defaultProvider="ADMembershipProvider">
<providers>
<add
name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionUsername="DOMAIN\username"
connectionPassword="trustedpassword"
enableSearchMethods="true"
applicationName="name" />
</providers>
</membership>
Some help please? What I am doing wrong? Why it works with firstname.lastname@domain but not with firstname.lastname.sometingelse@domain? Also, it fails ONLY under some specific Organizational Units. Seriously, any help would be very welcome.
So, I'm currently developing a web application in Visual Studio 2008. I have set ActiveDirectoryMembershipProvider as the default membership provider and AuthorizationRoleProvider as the default role provider. All works perfectly.. I can add users to my site. UNTIL I try the method GetRolesForUser(string username).
This method works just fine with firstname.lastname@domain accounts.. but fails horribly when the user account is firstname.lastname.somethingelse@domain. It first throws an exception as follows:
System.Reflection.TargetInvocationException was unhandled by user code
Message="Exception has been thrown by the target of an invocation."
Source="mscorlib"
StackTrace:
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
at System.Web.Security.AuthorizationStoreRoleProvider.CallMethod(Object objectToCallOn, String methodName, Object[] args)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContextFromName(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContext(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUserCore(String username)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUser(String username)
at System.Web.Security.Roles.GetRolesForUser(String username)
at DAOSetup.DataAccess.Interop.ActiveDirectoryController.GetUserRoles(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\ActiveDirectoryController.cs:line 124
at DAOSetup.DataAccess.Interop.UserDataController.RemoveUserAndDeauthorize(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\UserDataController.cs:line 101
at DAOSetup.Private.Administration.RemoveUser.Page_Load(Object sender, EventArgs e) in ..\PersistenceSetup\DAOSetup\Private\Administration\RemoveUser.aspx.cs:line 35
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException: System.Runtime.InteropServices.COMException
Message="The specified domain either does not exists or coulld not be contacted. (Exception from HRESULT: 0x8007054B)"
Source=""
ErrorCode=-2147023541
InnerException:
Ok, now.. after I try the method a second time, I get a different exception..
System.Reflection.TargetInvocationException was unhandled by user code
Message="Exception has been thrown by the target of an invocation."
Source="mscorlib"
StackTrace:
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
at System.Web.Security.AuthorizationStoreRoleProvider.CallMethod(Object objectToCallOn, String methodName, Object[] args)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContextFromName(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetClientContext(String userName)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUserCore(String username)
at System.Web.Security.AuthorizationStoreRoleProvider.GetRolesForUser(String username)
at System.Web.Security.Roles.GetRolesForUser(String username)
at DAOSetup.DataAccess.Interop.ActiveDirectoryController.GetUserRoles(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\ActiveDirectoryController.cs:line 124
at DAOSetup.DataAccess.Interop.UserDataController.RemoveUserAndDeauthorize(String accountName) in ..\PersistenceSetup\DAOSetup\DataAccess\Interop\UserDataController.cs:line 101
at DAOSetup.Private.Administration.RemoveUser.Page_Load(Object sender, EventArgs e) in..PersistenceSetup\DAOSetup\Private\Administration\RemoveUser.aspx.cs:line 35
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException: System.Runtime.InteropServices.COMException
Message="The Active Directory property could not be found in the cache.\r\n"
Source="Active Directory"
ErrorCode=-2147023541
InnerException:
This is really gettin out of my nerves.. I thing is something related to the AD naming conventions, because with firstname.lastname@domain it works JUST FINE. Also, my providers are set as follows:
<roleManager
enabled="true"
cacheRolesInCookie="true"
defaultProvider="AzManRoleProvider"
cookieName=".ASPXROLES"
cookiePath="\"
cookieTimeout="30"
cookieRequireSSL="true"
cookieSlidingExpiration="true"
createPersistentCookie="false"
cookieProtection="All">
<providers>
<add name="AzManRoleProvider"
type="System.Web.Security.AuthorizationStoreRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, publicKeyToken=b03f5f7f11d50a3a"
connectionStringName="AzManPolicyStore"
applicationName="<name>"/>
</providers>
</roleManager>
<identity impersonate="true"/>
<membership defaultProvider="ADMembershipProvider">
<providers>
<add
name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
connectionUsername="DOMAIN\username"
connectionPassword="trustedpassword"
enableSearchMethods="true"
applicationName="name" />
</providers>
</membership>
Some help please? What I am doing wrong? Why it works with firstname.lastname@domain but not with firstname.lastname.sometingelse@domain? Also, it fails ONLY under some specific Organizational Units. Seriously, any help would be very welcome.