使用ActiveDirectory Provider,当我执行Membershhip.GetUser()
时
我收到一条错误消息:
参数'username'不能为空。
以下是会员配置:
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider" >
<providers>
<clear/>
<add name="AspNetActiveDirectoryMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName"/>
</providers>
</membership>
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
我正在尝试从Visual Studio单元测试方法访问此方法。 感谢您的帮助:))
答案 0 :(得分:1)
问题是当前线程主体尚未设置。
添加以下行:
Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
初始化当前的原理并且GetUser()恢复工作。