Active directory - Ausnahme ausgelöst wurde, durch das Ziel für einen Aufruf
Ich habe eine web-Anwendung in einem separaten server als Active Directory-und das will ich ändern das Passwort eines Benutzers. Der code ist die nächste:
string newPassword = Membership.GeneratePassword(int.Parse(WebConfigurationManager.AppSettings["passLenght"]),
int.Parse(WebConfigurationManager.AppSettings["passNonAlpha"]));
DirectoryEntry de = new DirectoryEntry(WebConfigurationManager.ConnectionStrings["ADConnString"].ConnectionString,
WebConfigurationManager.AppSettings["ADAdmin"], WebConfigurationManager.AppSettings["ADAdminPass"]);
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(objectClass=user) (userPrincipalName=" + name + "))";
SearchResultCollection results = deSearch.FindAll();
if (results.Count == 1)
{
foreach (SearchResult OneSearchResult in results)
{
DirectoryEntry AlterUser = OneSearchResult.GetDirectoryEntry();
AlterUser.AuthenticationType = AuthenticationTypes.Secure;
AlterUser.Invoke("SetPassword", newPassword);
AlterUser.CommitChanges();
AlterUser.Close();
}
}
Wenn ich dieses in meiner Entwicklungsumgebung (wo der Active Directory-und web-Anwendung auf demselben server) arbeiten. Aber wenn ich versuche, führen Sie es in der Produktionsumgebung ich bin mit dem nächsten Fehler:
Ausnahme wurde ausgelöst durch das Ziel für einen Aufruf
Was bin ich?
Dank.
EDIT:
Ich könnte gehen tief in die exception-error und ich bekomme diese:
Zugriff verweigert. (Ausnahme von HRESULT: 0 x 80070005 (E_ACCESSDENIED))
- Bitte können Sie uns die form
ADConnString
in Ihrer Konfigurationsdatei an. Können Sie mehr Details über die Ausnahme (die Anleitung die es verursachen). - Welche Linie wirft die Ausnahme? Anrufen? CommitChanges? Filter? Macht Ihr bei der Suche alle Einträge?
- Sorry, ich kann nicht geben Sie die Verbindungszeichenfolge für Sicherheitsfragen. Aber ich kann Ihnen sagen, es funktioniert durch die Mitgliedschaft Konfiguration. Jetzt kann ich Ihnen nicht sagen, die Zeile oder der Befehl den Fehler verursacht, werde ich versuchen, zu Debuggen, wenn ich es kann... denkt Daran, es ist eine Produktions-Umgebung...
- Ich gehe tief in die Fehler ein, bekomme ich dieses: "Zugriff verweigert. (Ausnahme von HRESULT: 0 x 80070005 (E_ACCESSDENIED))". Nach einer kurzen Suche fand ich diesen link social.msdn.microsoft.com/Forums/eu/vsreportcontrols/thread/.... Aber es braucht eine Maschine zurückgesetzt, so werde ich versuchen, wenn ich kann...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Berechtigungen sind das Problem. Das Konto, unter dem Sie Ihre ASP.NET code läuft nicht über die Berechtigung zum festlegen des Kennworts für das Konto.
Entweder:
SetPassword
nennenDer Grund, warum es in Ihrem dev-Umgebung/Mangel in der Produktion ist wahrscheinlich auf eine Kombination von:
LogonUser
), um die Authentifizierung bei AD.Den code richtig aussieht. Dies konnte geschehen, weil das Passwort für das senden, wenn Active Directory nicht die Mindestanforderungen erfüllen. Versuchen Sie es mit einem komplexeren Passwort wie "M2k3ThisWork!"
Wenn Sie möchten, ändern Sie das Passwort des AD-dann nutzen Sie diese