Олицетворение: звоните только один раз или продолжайте звонить для каждого звонка MVC2 callng -> WCF - PullRequest
1 голос
/ 12 августа 2011

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

client.ClientCredentials.Windows.AllowedImpersonationLevel =
    System.Security.Principal.TokenImpersonationLevel.Impersonation;

Я звоню своему клиенту несколько раз по ходу моих контроллеров. Я звоню только один раз. Кажется, я не могу пройти первую страницу моего сайта (хотя этот сайт - сайт MVC2) и называет мой веб-сервис WCF.

Немного смущен здесь. Если вы, ребята, можете помочь, я был бы очень благодарен. Спасибо.

1 Ответ

1 голос
/ 13 августа 2011

Олицетворение разрешено для каждого экземпляра прокси (клиентского канала), поэтому, если вы создаете новый экземпляр прокси (client) для различных контроллеров / действий, вы должны настроить его для каждого экземпляра прокси. Создав экземпляр, вы можете сделать несколько обращений к службе в этом экземпляре, и он будет правильно выдавать себя за клиента. Помните, что вы должны создать новый экземпляр прокси для каждого действия MVC, которое должно взаимодействовать со службой WCF.

Btw. Вы пытаетесь выдать себя за оригинального пользователя (пользователя, который обращается к вашему приложению MVC) или учетную запись пользователя под управлением AppPool, на которой размещено приложение MVC? Если первый случай - ваш сценарий, у вас могут быть проблемы, потому что олицетворение ограничено одним прыжком в сети. Это означает, что пользователь может олицетворяться на сервере, на котором размещено приложение MVC (первый переход), но если служба WCF будет работать на другом сервере (второй переход), он не будет работать там (из-за ограничения одного перехода). В таких сценариях требуется делегирование вместо олицетворения, а делегирование требует правильно настроенного Kerberos.

...