Warum kann mein Dienst System.Transactions nicht laden, wenn ich versuche, eine LINQ to SQL-Abfrage auszuführen, wenn ich die Identität in einem WCF-Dienst anwende?

8

Ich habe einen WCF-Dienst, der in IIS 7.0 gehostet wird und Datenbankabfragen ausführen muss. Um die richtigen Berechtigungen zu erhalten, stelle ich mich innerhalb des Dienstes wie folgt vor:

Code

%Vor%

Konfiguration

%Vor%

Wenn ich versuche, eine Verbindung herzustellen und meine Abfrage auszuführen, bekomme ich Folgendes:

%Vor%     
Simon 10.11.2008, 13:47
quelle

7 Antworten

3

Wenn Sie möchten, dass die SQL-Abfragen als Identitätswechsel ausgeführt werden, müssen Sie möglicherweise die Delegierung an Ihren SQL-Server aktivieren. In diesem Artikel finden Sie weitere Informationen:

Ссылка

    
Kwal 10.11.2008, 15:31
quelle
6

Setzt Ihr WCF-Client die erforderliche "zulässige Identitätswechselebene" fest:

%Vor%

Standardmäßig ist dies auf Identifikation eingestellt, wenn nichts explizit angegeben ist. Weitere Informationen finden Sie in diesem Blogpost .

    
huseyint 26.11.2008 14:41
quelle
1

Danke Leute, Ich habe es gelöst, indem ich das XML unter der Deklaration von:

gelesen habe %Vor%

es funktionierte nur, wenn ich das XML direkt von der WCFService Klasse las.

    
Liron Prihar 08.01.2009 12:09
quelle
0

Hmmm ... Ich weiß es nicht. Allerdings könnten Sie die DLL frühzeitig laden. Da Sie IIS verwenden, wäre dies vermutlich in Ihrer global.asax - etwas wie das Erstellen und Wegwerfen eines TransactionScope sollte die Aufgabe erledigen ...

    
Marc Gravell 10.11.2008 14:00
quelle
0

Nachdem Sie mit dieser Lösung experimentiert haben, besteht die einfachste Lösung für von IIS gehostete Services darin, Ihren Anwendungspool mit der Identität eines Domänenbenutzers auszuführen, der über die erforderlichen Berechtigungen verfügt. Es gibt wahrscheinlich Probleme in Bezug auf Sicherheit, aber für unsere Zwecke ist es gut genug. Wir können die Berechtigungen für diesen Benutzer einschränken, aber alles funktioniert, ohne in Kerberos, Identitätswechsel, Delegation und die Geheimnisse von AD zu geraten.

    
Simon 11.11.2008 14:31
quelle
0

Danke huseyint. Ich kämpfe seit anderthalb Tagen gegen diesen. Hier sind einige Sachen, die mich eine Menge Zeit gerettet hätten. Also hoffentlich wird es jemand anderen Zeit sparen. Ich hatte Probleme mit der SQLConnection und der Identitätswechsel, der einen Registrierungszugriff verweigert, wurde mithilfe der Transportsicherheit verweigert. Ich habe sogar versucht, transportwithmessagecredential zu verwenden. Innerhalb von procmon bekam ich "Bad Impersonation". Meine Konfiguration ist In IIS 7, virtuelles Verzeichnis, ist nur die Windows-Authentifizierung aktiviert und die Kernelmodusauthentifizierung wurde deaktiviert. Grundeinstellungen Ich habe es so eingerichtet, dass es die Pass-Through-Authentifizierung verwendet.

Service-Konfiguration -

%Vor%

und der Kunde

%Vor%     
Edward Cooke 01.07.2009 17:31
quelle
0

Dieser hat mein Problem gelöst.

Klicken Sie mit der rechten Maustaste auf Visual Studio (je nachdem, welche Version Sie verwenden) Eigenschaften Wählen Sie die Registerkarte Kompatibilität Füllen Sie das Kontrollkästchen "Dieses Programm als Administrator ausführen" aus. Öffnen Sie das Projekt vom Speicherort der Datei Führen Sie die Anwendung aus

    
Abdelrahman ELGAMAL 30.03.2015 13:27
quelle