2009-07-21 33 views
6

Nếu có ai có câu chuyện tương tự, vui lòng gửi chi tiết bên dưới!Tại sao xác thực đối với LDAP với DirectoryEntry liên tục ném COMException (0x8007203A): "Máy chủ không hoạt động"?

Tôi đang xây dựng trang web ASP.NET cần hỗ trợ xác thực chống lại LDAP.

Trên cửa sổ, LDAP auth có thể được thực hiện thông qua Active Directory (Tôi không có chuyên gia, nhưng AD dường như chỉ đơn giản là một hương vị đặc biệt của ldap). Tôi không kiểm soát các máy chủ AD và/hoặc LDAP.

Tôi đã thử nhiều phương pháp xác thực, nhưng tôi đã giải quyết trên sử dụng một đơn DirectoryEntry mỗi lần xác thực:

using (DirectoryEntry de = new DirectoryEntry(ldapPath, ldapUsername, password, AuthenticationTypes.ServerBind)) { 
    try { 
     // Bind to the native AdsObject to force authentication. 
     object obj = de.NativeObject;//not IDisposable 
    } catch(... 

Lấy các NativeObject gây ra một COMException nếu bất cứ điều gì nào gặp khó khăn, ví dụ nếu xác thực thất bại, ngoại lệ là một cái gì đó như "Đăng nhập thất bại: không biết tên người dùng hoặc mật khẩu xấu", và nếu máy chủ ldap là không thể truy cập hoặc lần ra, một cái gì đó như "Máy chủ không hoạt động."

Công trình này, về cơ bản, nhưng sau số ngày thay đổi, luôn bắt đầu điều đầu tiên vào buổi sáng, chúng tôi nhận được "Máy chủ không hoạt động". cho đến khi IIS được khởi động lại. Điều này rõ ràng không phải là một giải pháp lâu dài tuyệt vời, nhưng như xa như tôi có thể nói với lỗi nằm với Com Object DirectoryEntry cơ bản - không phải là một cái gì đó dễ dàng để sửa chữa.

Thisproblemisn'tneworunknown. Một số người đã trải qua sự hỗ trợ của microsoft với kết quả hỗn hợp; về cơ bản các câu trả lời dường như đi xuống để "lấy đường dẫn ldap của bạn và tạo ra một vài lựa chọn thay thế tương đương và có thể một trong số đó sẽ hoạt động". Mỗi khi bạn cố gắng, hoặc tất nhiên, bạn sẽ không biết trong một vài ngày cho dù nó thực sự làm việc, và cho đến khi một giải pháp thực sự được tìm thấy, chúng tôi trở lại "khởi động lại các máy chủ windows mỗi đêm".

Như một sự khởi đầu, tôi đã cố gắng đường ldap theo định dạng

* "LDAP://server.uri:636" 
* "LDAP://insecure.server.uri:389" 
* "LDAP://server.uri:636/cn=username,ou=staff,o=myOrganisation,c=org" 

Luôn có một tên người dùng với các mô hình sau:

* "cn=username,ou=staff,o=myOrganisation,c=org" 

Tất cả những phương pháp làm việc ban đầu, nhưng thất bại sau một số ngày thay đổi (và bắt đầu làm việc sau khi thiết lập lại IIS). Máy chủ đang chạy IIS6 trên chiến thắng 2k3.

Nếu có ai khác gặp phải sự cố này, vui lòng đăng bài bên dưới và có thể chúng tôi sẽ tìm một mẫu để làm việc hoặc có đủ số ví dụ để thuyết phục microsoft sửa lỗi này.

+0

Có thể lỗi này có liên quan đến chiến thắng tùy chọn phân nhóm 2K3 của - chúng tôi đã di cư đến một hệ thống máy chủ đơn không cụm, và vài ngày qua đã có vấn đề miễn phí. –

+0

Điều gì đã được nhóm lại? Máy chủ đang chạy ứng dụng của bạn hoặc máy chủ đang chạy AD? –

+0

Máy chủ đang chạy ứng dụng. Máy chủ LDAP thực sự là một máy không phải cửa sổ đang chạy ở đâu đó bên ngoài - tôi không chắc về cấu hình của nó. Ngoài ra, các vấn đề dường như xảy ra ngay cả đối với các kết nối UDP được tạo thủ công, cho thấy đây là một số điều cấp thấp. –

Trả lời

5

Mặc dù tôi không thể xác định chính xác nguyên nhân của sự cố này, nhưng dường như phải dừng lại sau khi di chuyển sang máy chủ không được nhóm.

Có sự kiện kỳ ​​lạ khác về lỗi này:

  • Khởi động lại quá trình máy chủ asp.net là không đủ để sửa chữa những rắc rối. Này là số lẻ; bạn muốn hệ điều hành buộc phải giải phóng tài nguyên về quá trình chết
  • Khởi động lại dịch vụ IIS không giải phóng tài nguyên (cổng UDP).netstat cho thấy các cổng có vẻ miễn phí, nhưng tất cả các cổng được mở thực sự được mở bằng quy trình # 4 - quy trình Hệ thống.
  • Giết IIS (ví dụ thông qua trình quản lý IIS) làm giải phóng các cổng UDP và sau đó xác thực lại hoạt động trở lại.

Tất cả trong tất cả, điều này trông rất giống với vấn đề về trình điều khiển hoặc hạt nhân trong win2k3 khi bật nhóm và không phải là sự cố liên quan đến .NET.

Vì vậy, nếu bất kỳ ai khác tình cờ gặp một vấn đề tương tự, hãy kiểm tra xem cụm máy chủ có được kích hoạt hay không - nó có thể giúp bạn tiết kiệm nhiều tuần đau đầu.

0

Tôi đã đọc nội dung nào đó về việc kiểm tra với NETSTAT và kiểm tra trạng thái của các kết nối đang hoạt động. một TIME WAIT bội số có thể chỉ ra một vấn đề với chuyển hướng cổng. Tuy nhiên, tôi nhận được lỗi tương tự trong 3 ngày qua. Tôi đã yêu cầu quản trị viên mạng sửa đổi quyền của tôi và thậm chí điều đó cũng không giúp ích gì. Các bài viết thảo luận này chi tiết hơn: C# .NET Application looses Connection to the Active Directory

+0

http://forums.techarena.in/active-directory/943180.htm không tìm thấy – Kiquenet

Các vấn đề liên quan