Стандартное WCF NetNamedPipesBinding создает случайно сгенерированное имя канала при запуске службы, а также объект общей памяти ядра, к которому стек клиентских каналов WCF должен обратиться, чтобы узнать имя канала.
Использование олицетворения на вашем веб-сайте означает, что контекст безопасности, из которого вызывается ваша служба WCF, имеет маркер входа в систему (маркер олицетворения), который включает членство в группе NETWORK USERS.
Когда запускается прослушиватель службы, привязка WCF создает список управления доступом (ACL) как для самого именованного канала, так и для объекта общей памяти, где публикуется имя канала. Оба эти ACL-списка запрещают доступ к группе NETWORK USERS. Таким образом, вашему веб-сайту, выдающему себя за удаленного пользователя, отказано в доступе к объекту общей памяти, прежде чем он сможет даже обнаружить имя канала. Даже если он узнает имя канала другим способом, ему все равно будет отказано в доступе к каналу.
Все работает, когда вы удаляете олицетворение, потому что теперь служба вызывается в контексте безопасности рабочего процесса веб-приложения, чей маркер входа не входит в группу NETWORK USERS - это локальный вход в систему.
Подробнее на http://blogs.charteris.com/blogs/chrisdi, если вам интересно. Я показываю, как можно настроить ACL, и в принципе этот подход можно использовать для предоставления доступа удаленным пользователям, но я не рекомендую этого.