Почему мне нужно настроить aspNetCompatibilityEnabled дважды? - PullRequest
2 голосов
/ 27 сентября 2011

Может ли кто-нибудь объяснить, почему при создании веб-сервиса WCF, в котором вы хотите использовать HttpContext.Current.Items, вам нужно добавить некоторый код в 2 местах?Один в самом веб-сервисе ([AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]) и один в файле web.config (<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />)?

У моего коллеги только что все его вызовы веб-сервиса не состоялись.У него пропала настройка web.config и спросил, почему.Я пытался объяснить, но я не уверен, что смог:)

Я думаю, что это связано с разделением кода веб-сервиса и местом, где размещается веб-сервис.Сам веб-сервис говорит, что ему нужен этот режим совместимости.Затем необходимо также настроить среду хостинга, чтобы сказать, что она должна работать в этом режиме совместимости.Разве это не главное?У него все еще оставался вопрос: «но если служба использует этот атрибут, разве он не должен быть автоматически?»

1 Ответ

2 голосов
/ 27 сентября 2011

Первый сообщает WCF, что aspcompat должен быть включен, а второй включает его. Вы должны быть в состоянии обойтись без первого.

Это заставляет человека, настраивающего службу WCF, использовать правильную конфигурацию.

MS разработал это с мыслью, что человек, который настраивает службу, может быть кем-то другим, чем человек, который ее создал.

Чтобы ответить на его последний вопрос. Когда вы добавляете атрибуты к своей службе, вы не настраиваете хост, вы требуете, как хост должен быть настроен. Конфигурирование происходит на хосте.

...