WCF @ServiceHost Debug = "true", но компиляция web.config = "false" - PullRequest
4 голосов
/ 03 декабря 2011

Я просматривал документы MSDN, но не нашел конкретного ответа.

Свойство Debug в @ServiceHost переопределяет атрибут компиляции Web.config или атрибут web.config переопределяет все?

Спасибо.

1 Ответ

1 голос
/ 03 декабря 2011

Согласно: http://msdn.microsoft.com/en-us/library/aa702682.aspx

Среда выполнения ASP.NET HTTP обрабатывает запросы ASP.NET, но не участвует в обработке запросов, предназначенных для служб WCF, даже если эти службы размещены втот же AppDomain, что и содержимое ASP.NET.Вместо этого Модель Сервиса WCF перехватывает сообщения, адресованные сервисам WCF, и направляет их через стек транспорта / канала WCF.

Если вы не используете свои службы в режиме совместимости WCF с ASP.NET.В этом случае ...

В отличие от параллельной конфигурации по умолчанию, где хостинговая инфраструктура WCF перехватывает сообщения WCF и направляет их из HTTP-конвейера, службы WCF работают в совместимости с ASP.NETРежим полностью участвует в жизненном цикле HTTP-запроса ASP.NET.В режиме совместимости службы WCF используют конвейер HTTP через реализацию IHttpHandler, аналогично тому, как обрабатываются запросы к страницам ASPX и веб-службам ASMX.

Если мы примем это утверждение, чем мы знаем, что наследование конфигурацииследует уважать.

Если вы хотите быть уверены, что вы, возможно, можете установить тест ...

Службы WCF, работающие в режиме совместимости ASP.NET, могут получить доступ к HttpContext.Current и связанному с ним состоянию.,Это означает, что вы можете запросить свойство IsDebuggingEnabled, чтобы увидеть, находитесь ли вы в режиме отладки.Вы также можете использовать некоторые директивы компилятора, такие как #if DEBUG, чтобы увидеть, достигнут ли блок кода.

Мне было бы очень любопытно узнать, каков окончательный вердикт.Я думаю, что ключом к этому вопросу является то, является ли это службой WCF, размещенной в IIS, и работает ли она в режиме AspCompatibility.

...