निम्नलिखित कोड बिना किसी समस्या के 3 महीने के लिए काम कर रहा था। आज से मुझे निम्न त्रुटि मिल रही है; "एक आमंत्रण के लक्ष्य से अपवाद को फेंक दिया गया है" और आंतरिक अपवाद; । "। पहुँच HRESULT से इनकार किया है (अपवाद: 0x80070005 (E_ACCESSDENIED)"एलडीएपी सेटपैसवर्ड एक्सेस अस्वीकार कर दिया गया है
प्रमाणीकरण समारोह काम करता है यहाँ मेरी कार्य हैं;
public bool Authenticate(string strUserName, string strPassword)
{
bool authenticated = false;
using (
var entry = new DirectoryEntry("LDAP://myldapserver", strUserName + "@domain", strPassword,
AuthenticationTypes.Secure))
{
try
{
object nativeObject = entry.NativeObject;
authenticated = true;
}
catch (DirectoryServicesCOMException ex)
{
return false;
}
}
return authenticated;
}
और ChangePassword विधि;
public bool ChangePassword(string strUserName, string strOldPassword, string strNewPassword)
{
const long ADS_OPTION_PASSWORD_PORTNUMBER = 6;
const long ADS_OPTION_PASSWORD_METHOD = 7;
const int ADS_PASSWORD_ENCODE_REQUIRE_SSL = 0;
const int ADS_PASSWORD_ENCODE_CLEAR = 1;
string strPort = "636";
int intPort;
intPort = Int32.Parse(strPort);
try
{
string strUserString = "domain" + @"\" + strUserName.Trim();
var entry = new DirectoryEntry("LDAP://myldapserver", strUserString, strOldPassword,
AuthenticationTypes.Secure);
var search = new DirectorySearcher(entry);
string strFilter = "(SAMAccountName=" + strUserName + ")";
search.Filter = strFilter;
SearchResult result = search.FindOne();
DirectoryEntry user = result.GetDirectoryEntry();
user.Invoke("SetOption", new object[] { ADS_OPTION_PASSWORD_PORTNUMBER, intPort });
user.Invoke("SetOption", new object[] { ADS_OPTION_PASSWORD_METHOD, ADS_PASSWORD_ENCODE_CLEAR });
**user.Invoke("SetPassword", new object[] { strNewPassword });**
user.CommitChanges();
user.Close();
}
catch (Exception exception)
{
string msg = exception.InnerException.Message;
return false;
}
return true;
}
यह जब मैं SetPassword प्रॉपर्टी का आह्वान करता हूं तो एक्सपेटियन फेंकता है। किसी भी मदद की सराहना की जाएगी।
कौन सी लाइन असफल रही है? क्या विधि विफल रही है? –
ChangePassword वह है जो लाइन उपयोगकर्ता पर विफल रहता है। इन्वोक ("सेटपासवर्ड", नई ऑब्जेक्ट [] {strNewPassword}); – user1595357
आपके द्वारा शीर्ष पर पोस्ट किया गया संदेश, आंतरिक अपवाद है? मैं पूछता हूं क्योंकि आंतरिक अपवाद में वास्तविक COM अपवाद प्राप्त होता है। –