Мы работаем над 3-уровневым приложением, и нам разрешено использовать самые последние и лучшие версии (MVC2, IIS7.5, WCF, SQL2k8 и т. Д.). Уровень приложений предоставляется различным веб-приложениям службами WCF. Так как мы контролируем и службу, и клиентскую часть, мы решили использовать привязки net.tcp для повышения производительности по сравнению с HTTP.
Мы хотели бы использовать ELMAH для регистрации ошибок, как в веб-приложениях, так и в сервисах. Вот мой вопрос. Существует много информации об использовании ELMAH с WCF, но это все для привязок HTTP. Кто-нибудь знает, можно ли / как использовать ELMAH со службами WCF, предоставляющими конечные точки, отличные от HTTP?
Полагаю, нет, потому что ELMAH хочет HttpContext, для которого требуется, чтобы флаг AspNetCompatibilityEnabled имел значение true в web.config. От MSDN :
IIS 7.0 и WAS позволяют службам WCF взаимодействовать по протоколам, отличным от HTTP. Однако службам WCF, работающим в приложениях, в которых включен режим совместимости ASP.NET, запрещается предоставлять конечные точки, отличные от HTTP. Такая конфигурация генерирует исключение активации, когда служба получает свое первое сообщение.
Если это правда, что вы не можете использовать ELMAH со службами WCF, имеющими конечные точки, отличные от HTTP, тогда возникает следующий вопрос: можем ли мы использовать ELMAH таким образом, чтобы не требовался HttpContext?
Или, в более общем смысле (чтобы не фиксировать ошибку thin metal ruler ), есть ЛЮБОЙ способ использовать ELMAH со службами WCF, имеющими конечные точки, отличные от HTTP?
Примечание: Мне известно, что мы можем загрузить исходный код Elmah и изменить его, чтобы добавить прокладку или удалить зависимость HttpContext, но я пытаюсь избежать разветвления кода.