DirectoryEntry-IIS-Zugriffsberechtigungen
Habe ich eine Konsole-Anwendung, die Liste der website-Bindung im IIS
using (var directoryEntry = new DirectoryEntry("IIS://localhost/w3svc/" + GetWebSiteId())) {
var bindings = directoryEntry.Properties["ServerBindings"];
}
Nenne ich diese Konsole-Anwendung aus ASP.NET über Prozess
var process = new Process {
StartInfo = new ProcessStartInfo {
FileName = "c:/app.exe",
Arguments = "check",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
Funktioniert alles einwandfrei auf die Entwicklung der Maschine unter Widows 7 /IIS 7.5, aber wenn ich den test auf der Windows-2012 /IIS 8 im immer "Zugriff verweigert" - Fehler.
Fehlerprotokoll
"System.Runtime.InteropServices.COMException (0x80070005): Access is denied.
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_IsContainer()
at System.DirectoryServices.DirectoryEntries.ChildEnumerator..ctor(DirectoryEntry container)
at System.DirectoryServices.DirectoryEntries.GetEnumerator()
at IISSubdomainManagement.Program.GetWebSiteId()
at IISSubdomainManagement.Program.TotalBindings()
at IISSubdomainManagement.Program.Main(String[] args)"
p.s Anwendungspool-Identität "ApplicationPoolIdentity"
Ich vergessen zu erwähnen, dass meine Konsole app funktioniert gut auf meinem server, wenn ich es ausführen von CMD
- Ich habe diese man vor und wenn ich mich erinnere, das Problem ist entweder, wo es gesucht wird der AD-server die Anmeldeinformationen nicht die richtigen Berechtigungen haben. Es ist ärgerlich, weil es gut funktioniert, lokal
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Erlaubnis geben, um das IUSR-Konto für den Zugriff auf und führen Sie
C:\app.exe
. Dieser link sollten Sie mit den notwendigen Informationen zu finden, die richtige Rechnung.System.DirectoryServices.DirectoryServicesCOMException (0x80072020): An operations error occurred.
(stattAccess denied
)Wahrscheinlich haben Sie erteilt die Erlaubnis zum 'ApplicationPoolIdentity" anstatt auf das virtuelle Konto, tatsächlich entspricht, die Anwendung Pool. Lesen Sie die Microsoft ' s Beschreibung oder online-Suche für virtuelle Identität IIS, etc.
Auf Ihre Entwicklung Maschine, die Sie haben wahrscheinlich irgendeine Art von Full-Admin Rechte, es ist also nicht so eingeschränkt.
Wenn Sie immer noch Probleme haben, nach, dass, würde ich empfehlen, replizieren den Fehler mit einem Process Monitor laufen, so dass Sie genau sehen können, welcher Prozess den Zugriff auf die Ressource, mit der Identität. Allerdings würde ich empfehlen replizieren, das Problem auf Ihre Entwicklung Maschine, sondern als Laufenden Prozess zu Überwachen, auf die Produktion. Es dauert ein wenig lernen zu können, führen Sie es effizient.
In IIS 7/8 gehen Systemsteuerung /Programme Und Features /Turn Windows-Funktionen ein-oder ausschalten, und überprüfen Sie alle Elemente von: Web-Management-Tools (es sind: IIS Management Service, II. 6 Management Compatibility)
Diese Lösung funktionierte für mich, ==>
http://blogs.msdn.com/b/jpsanders/archive/2009/05/13/iis-7-adsi-error-system-runtime-interopservices-comexception-0x80005000-unknown-error-0x80005000.aspx?CommentPosted=true#commentmessage