Ich habe einen WCF-Dienst, gehostet in IIS 7.0, der Datenbankabfragen ausführen muss. Um die richtigen Berechtigungen zu erhalten, um dies zu tun, bin ich innerhalb des Dienstes wie folgt impersonating:
Code
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
public void MyOperation(int arg)
Konfiguration
<behavior name="ReceivingServiceBehavior">
<!-- Other behaviors -->
<serviceAuthorization impersonateCallerForAllOperations="true" />
</behavior>
Wenn ich versuche, eine Verbindung herzustellen und meine Abfrage auszuführen, erhalte ich die folgende Meldung:
Exception - System.IO.FileLoadException: Could not load file or
assembly 'System.Transactions, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' or one of its dependencies. Either a
required impersonation level was not provided, or the provided
impersonation level is invalid. (Exception from HRESULT: 0x80070542)
File name: 'System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' ---> System.Runtime.InteropServices.COMException (0x80070542): Either a required impersonation level was not provided, or the provided impersonation level is invalid. (Exception from HRESULT: 0x80070542)
at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)
at System.Data.Linq.SqlClient.SqlProvider.get\_IsSqlCe()
at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery\`1.System.Collections.Generic.IEnumerable.GetEnumerator()
at System.Linq.Buffer\`1..ctor(IEnumerable\`1 source)
at System.Linq.Enumerable.ToArray\[TSource\](IEnumerable\`1 source)
at Fourth.GHS.MessageRelay.RegistrationDBStorage.FindRegistration(SystemKey key)