AD Provider Membership.GetUser()导致错误说:“参数'username'不能为空。”

时间:2009-06-16 08:52:12

标签: c# visual-studio unit-testing active-directory asp.net-membership

使用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单元测试方法访问此方法。 感谢您的帮助:))

1 个答案:

答案 0 :(得分:1)

问题是当前线程主体尚未设置。 添加以下行: Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
初始化当前的原理并且GetUser()恢复工作。