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