6 Stimmen

WCF-Dienstverbindung mit Drittanbieter-DLL mit IIS

Ich arbeite mit Windows 7, VS2010, SqlServer 2008.

Meine Anwendung nimmt Daten von einer Drittanbieter-DLL (die Daten von einem anderen Prozess nimmt, der im Hintergrund ausgeführt werden muss) und verarbeitet die Daten und sendet sie über einen WCF-Dienst an das Frontend.

Die Anwendung ist fertig und tut, was sie tun soll. Wenn ich sie nun verteilen und im IIS ausführen möchte, stehe ich vor einem Problem. Ich stehe vor einem seltsamen Problem. Die Anwendung erhält die Daten von einer DLL, wenn ich sie im IIS ausführe, schlägt sie fehl und gibt einen Fehler beim Verbinden mit der DLL.

Abrufen der COM-Klassenfabrik für Komponente mit CLSID {FCEC6861-5866-4F9E9A09-7CC868C30A8B} schlug aufgrund des folgenden Fehler: 80070005 Zugriff wird verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED)).

Nach einigen Nachforschungen fand ich heraus, dass ich im Komponentendienst und in der DCOM-Konfiguration die Sicherheit der dll auf "Jeder" änderte. Der Fehler hörte auf.

Aber jetzt bekomme ich den Fehler nicht, aber ich bekomme die Daten nicht, wenn die Software, die die Daten liefert, geschlossen wird. Aber Arbeit ok mit meinem ASP.net Entwicklungsserver.

Außerdem habe ich festgestellt, dass ich, wenn ich Visual Studio im Administratormodus ausführe, auch die Datensoftware von Drittanbietern im Administratormodus ausführen muss.

Die dll-Referenz wird nicht automatisch in den bin-Ordner kopiert, sondern in den obj-Ordner und ich habe sie manuell kopiert, aber es funktioniert nicht.

1voto

kroonwijk Punkte 8300

Ich denke, dass die COM-Komponente im gleichen Kontext wie der Aufrufer ausgeführt wird und erhöhte Berechtigungen benötigt, um ihre Aufgabe zu erfüllen.

Also:

  • VS im Admin-Modus, COM im Admin-Modus, funktioniert, weil beide systemweite Berechtigungen haben, um ihre Arbeit auszuführen.
  • IIS läuft unter dem App-Pool-Konto (nicht sicher, welches), COM wird auch unter diesem Konto sein, aber es ist kein Administrator, also zu wenig Berechtigungen, um die Arbeit richtig zu machen.

Mein Vorschlag zur Fehlerbehebung wäre, den IIS-Anwendungspool, unter dem Ihre Anwendung ausgeführt wird, auf einen lokalen Administrator zu ändern. Wenn das gut funktioniert, setzen Sie die Zugriffsrechte für Ihr DCOM auf die Standardwerte zurück (bevor Sie auf "Jeder" geändert haben) und versuchen Sie es erneut. Sie können auch versuchen, den Anwendungspool unter dem lokalen Systemkonto auszuführen, um zu sehen, was passiert. Wenn das immer noch funktioniert, haben Sie bestätigt, dass dieses Verhalten das Problem ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X