讓我首先說我對活動目錄相當陌生,並且我不是處理服務器配置的人(如果這確實是與服務器相關的問題)。但是,如果給予適當的建議,我可以將這些建議轉達給正確的人。使用安全全局編錄的Active Directory失敗
我們正在運行一個大型ASP.NET C#.NET 3.5應用程序。
這是我們遇到之情況:
我創建了一個測試頁面來測試我們的全局編錄AD搜索。
從測試服務器1會出現以下情況:
使用GC://TEST.COM:3268(不安全) - >卓越的性能。
使用G:C // TEST.COM:3269(固定) - >大性能
從測試服務器2:
使用GC://TEST.COM:3268(不安全) - >很好的表現;很好的績效。
使用G:C // TEST.COM:3269(secured) - >失敗。
我看到的唯一的例外是:異常:「服務器不可操作」
我不認爲這是一個代碼問題的原因是測試服務器都運行相同的代碼。當我們試圖從測試服務器連接到GC的安全端口我們只有一個問題2.
下面是異常信息時,我嘗試在服務器上運行它,我有傾銷異常日誌表:
目錄服務Com異常(異常消息):服務器不可操作。 錯誤碼:-2147016646 堆棧跟蹤:
在System.DirectoryServices.DirectoryEntry.Bind(布爾throwIfFail)
在System.DirectoryServices.DirectoryEntry.Bind()在System.DirectoryServices.DirectoryEntry.get_AdsObject()
在在System.DirectoryServices.DirectorySearcher.FindAll(布爾findMoreThanOne)
在System.DirectoryServices.DirectorySearcher.FindOne()在TestClass.GetUserDomainTest(用戶名字符串)個
testclass.aspx.cs:行155
就像我說的,我不相信這是一個代碼問題,但我已經封閉的代碼是否會possilby幫助:
private string GetUserDomain2(string UserName)
{
string domainName = String.Empty;
try
{
// This is Test page code so we can change the values as we want
DirectoryEntry entry = new DirectoryEntry(txtGCPath.Text)
entry.Username = txtGCUserID.Text;
entry.Password = txtGCPassword.Text;
// Set SSL or leave default
if (cb1.Checked == true)
{
entry.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
}
DirectorySearcher search = new DirectorySearcher();
search.SearchRoot = entry;
search.SearchScope = SearchScope.Subtree;
search.Filter = string.Format(txtGCFilter.Text, UserName);
SearchResult results = search.FindOne(); // CRASHES HERE
// Parsing code removed.
return domainName;
}
第二臺服務器是否有證書有效? AD是否在3269上進行監聽? –
@Mohammed你有沒有找到這個的根本原因?我也有完全一樣的問題。 – StackTrace