0

我尝试使用 ASP.NET Active Directory Membership Provider 对 ASP.NET Web API 中的用户进行身份验证。此活动目录位于另一台服务器上,我只能通过 VPN 连接到该服务器。以下是我正在使用的代码:

网络配置:

<connectionStrings>    
<add name="ADConnectionString" connectionString="LDAP://vpn.servername.com/dc=vpn,dc=servername,dc=com"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
  <providers>
    <add name="AspNetActiveDirectoryMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionProtection="Secure"
         attributeMapUsername="sAMAccountName"
         enableSearchMethods="false" />
  </providers>
</membership>

C#:

System.Web.Security.Membership.ValidateUser(username, password);

它抛出一个异常,它无法与服务器建立安全连接,最里面的异常消息是服务器无法运行。我还使用 Cisco AnyConnect 连接到此 VPN,并且工作正常。

有什么我想念的吗?

4

1 回答 1

0

我偶尔也会遇到类似的问题。我的经验是,这通常是连接字符串的名称解析问题。

  1. 检查最里面的异常以查看是否有The server is not operational异常。如果是这样,您对 vpn.servername.com 的名称解析可能无法解析到您的 Active Directory 服务器;
  2. 尝试使用该名称进行 ping 以查看是否解析;
  3. 确保您的服务器名称是 AD 域控制器。对我来说,这个名字看起来像 servername.domain.local。
于 2015-07-08T16:04:46.647 回答