gpt4 book ai didi

c# - PrincipalContext 未连接

转载 作者:可可西里 更新时间:2023-11-01 08:13:45 26 4
gpt4 key购买 nike

我正在尝试将 PrincipalContext 用于我正在开发的网络服务。我已经在不同应用程序的 Web 服务器上使用表单例份验证,并且工作正常。

我收到的错误是:

System.DirectoryServices.AccountManagement.PrincipalServerDownException: The server could not be contacted. ---> System.DirectoryServices.Protocols.LdapException: The LDAP server is unavailable.
at System.DirectoryServices.Protocols.LdapConnection.Connect()
at System.DirectoryServices.Protocols.LdapConnection.SendRequestHelper(DirectoryRequest request, Int32& messageID)
at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request, TimeSpan requestTimeout)
at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request)
at System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName, ServerProperties& properties)
--- End of inner exception stack trace ---
at System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName, ServerProperties& properties)
at System.DirectoryServices.AccountManagement.PrincipalContext.DoServerVerifyAndPropRetrieval()
at System.DirectoryServices.AccountManagement.PrincipalContext..ctor(ContextType contextType, String name, String container, ContextOptions options, String userName, String password)
at System.DirectoryServices.AccountManagement.PrincipalContext..ctor(ContextType contextType, String name, String container, String userName, String password)
at webService.Service1.ValidUser(String sUserName) in E:\Development\CSharpApps\Desktop\OrgChart\webService\Service1.asmx.cs:line 158

我们的网络服务器位于 DMZ 中,并通过防火墙访问域。我正在使用端口信息等作为示例。

这可以使用我的开发箱中的 ip,但它位于防火墙内。我发送给它的 IP 信息与我在 Web 表单例份验证中使用的相同。

 PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "192.168.1.1:389", "dc=doodlie,dc=com",@"doodlie\admin","doodliesquat");

最佳答案

也许我遗漏了什么,但你实际上不必指定 AD 服务器,你可以简单地说:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

并且它应该在应用程序的当前域中找到它可以找到的任何 DC。如果它是一个具有容错性的网络,当一个网络宕机时,另一个网络应该恢复。我不确定为什么会有理由打一个,具体来说,就像原始问题中的代码一样,除非它在不同的域中。如果是这种情况,您可以尝试在该域上托管您的 Web 服务,并在需要时使用 DNS 和转发器调用/路由到新域上您的 Web 服务的新 IP,或者使用 Hosts 文件条目, 或仅通过 IP 引用 Web 服务。

关于c# - PrincipalContext 未连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com