«Служба не может быть активирована, потому что она требует совместимости с asp net», но она мне нужна для олицетворения - PullRequest
5 голосов
/ 03 марта 2011

Я вчера разместил вопрос о том, как включить олицетворение с помощью служб WCF, здесь: Служба WCF не олицетворяет указанного пользователя в конфигурации?

Я включил aspnetCompatibilityMode, но когда я обновляю свой прокси-сервер службы, он говорит: «Служба не может быть активирована, поскольку она требует совместимости с asp net». Я не совсем уверен, что это значит. Если я изменяю настройку на AspNetCompatibilityRequirementsMode.Allowed, она не включает олицетворение. Я попытался включить настройку как в web.config, так и через атрибут class.

Есть ли способ обойти это без настройки пула приложений моей службы для работы от имени нужного мне пользователя? Спасибо.

1 Ответ

14 голосов
/ 03 марта 2011

Вы должны включить AspNetCompatibility в web.config сайта, на котором работает ваш сервис:

<system.serviceModel>
  ...
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>

Поскольку ваша служба зависит от ASP.NET, вы должны пометить класс службы следующим образом:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

Значение по умолчанию AspNetCompatibilityRequirements.RequirementMode равно NotAllowed, так что это, скорее всего, причина вашего исключения.

...