Ошибка уровня олицетворения WCF в System.Data.OracleClient - PullRequest
2 голосов
/ 30 ноября 2010

В настоящее время у меня есть служба WCF, работающая в IIS7, и я добавил олицетворение для каждого из общедоступных веб-методов со следующим:

[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public void TestMethod(){}

Когда я вызываю этот метод из моего тестового клиентского приложения, я получаю следующую ошибку:

Не удалось загрузить файл или сборку 'System.Data.OracleClient, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = waeraewrar' или одна из ее зависимостей. Либо требуемый уровень олицетворения не был предоставлен, либо предоставленный уровень олицетворения недействителен.

В настоящее время я использую Microsoft Enterprise Library 3.1 и .Net 4.0.

Пример кода:

WcfService client = new WcfService();
client.TestMethod();

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Попробуйте настроить клиент для разрешения уровня олицетворения олицетворение . Например:

<system.serviceModel>
    <client>
      <endpoint address="http://xxxxx/Services/xxService.svc"
                binding="wsHttpBinding"
                contract="IServiceContract"
                behaviorConfiguration = "ImpersonationBehavior" />
    </client>
      <behaviors>
          <endpointBehaviors>
               <behavior name="ImpersonationBehavior">
                   <clientCredentials>
                       <windows allowedImpersonationLevel = "Impersonation" />
                   </clientCredentials>
               </behavior>
          <endpointBehaviors>
       </behaviors>
</system.serviceModel>

См. эту статью , чтобы узнать больше об олицетворении и делегировании.

0 голосов
/ 30 ноября 2010

В сообщении об ошибке указывается, что проблема заключается в том, что подменяющий пользователя пользователь не имеет доступа к DLL-сборке System.Data.OracleClient в файловой системе и, следовательно, не может ее загрузить.

Нельзя ли заставить первую сборку System.Data.OracleClient сначала загружаться кодом вне сервисных методов, требующих олицетворения ... то есть кодом, выполняемым с идентификатором рабочего процесса IIS.Например, в вашем конструкторе экземпляра службы.

Как только сборка загружается в домен приложения службы, методы службы, работающие под олицетворением, не должны делать это снова.

...