Мы работаем над трехуровневым приложением, и нам разрешено использовать новейшие и самые большие (MVC2, IIS7.5, WCF, SQL2k8 и т. Д.). Уровень приложения подвергается различным веб-приложениям службами WCF. Поскольку мы контролируем как сервисную, так и клиентскую сторону, мы решили использовать привязки net.tcp для повышения их производительности по сравнению с HTTP.Elmah для приложений, не относящихся к протоколу HTTP или Elmah без HttpContext
Мы хотели бы использовать ELMAH для регистрации ошибок, как в веб-приложениях, так и в сервисах. Вот мой вопрос. Существует много информации об использовании ELMAH с WCF, но это все для привязок HTTP. Кто-нибудь знает, если/как вы можете использовать ELMAH с услугами WCF, предоставляя конечные точки без HTTP?
Мое предположение - нет, потому что ELMAH хочет HttpContext, для которого флаг AspNetCompatibilityEnabled должен быть истинным в файле 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, но я стараюсь избегать разметки кода.
Может проверить это для использования Elmah в консольных приложениях - некоторые из них могут быть полезны в вашей ситуации: http://stackoverflow.com/questions/841451/using-elmah-in-a-console-application – user1191559