Elmah для приложений непротокола HTTP ИЛИ Elmah без HttpContext

Мы работаем над 3-уровневым приложением, и нам разрешили использовать последнее и самое большое (MVC2, IIS7.5, WCF, SQL2k8, и т.д.). Уровень приложений выставляется различным веб-приложениям сервисами WCF. Так как мы управляем и сервисом и стороной клиента, мы решили использовать net.tcp привязку для их преимущества производительности перед HTTP.

Мы хотели бы использовать ELMAH для регистрации ошибок, и на веб-приложениях и на сервисах. Вот мой вопрос. Существует большая информация об использовании ELMAH с WCF, но это - все для HTTP-связываний. Кто-либо знает, можно ли использовать ELMAH с сервисами WCF, выставляющими неконечные точки HTTP?

Мое предположение не, потому что ELMAH хочет HttpContext, который требует, чтобы флаг AspNetCompatibilityEnabled был верен в web.config. Из MSDN:

IIS 7.0 и БЫЛ, позволяет сервисам WCF связываться по протоколам кроме HTTP. Однако сервисам WCF, работающим в приложениях, которые включили режим эмуляции ASP.NET, не разрешают выставить неконечные точки HTTP. Такая конфигурация генерирует исключение активации, когда сервис получает свое первое сообщение.

Если это верно, что Вы не можете использовать ELMAH с сервисами WCF, имеющими неконечные точки HTTP, то последующий вопрос: мы можем использовать ELMAH таким способом, которому не нужен HttpContext? Или в более общем плане (чтобы не совершить ошибку линейки тонкого металла), там КАКОЙ-ЛИБО способ использовать ELMAH с сервисами WCF, имеющими неконечные точки HTTP?

Примечание: Я знаю, что мы можем загрузить исходный код Elmah и изменить его, чтобы добавить контейнер или удалить зависимость HttpContext, но я стараюсь не разветвлять код.

5
задан Josh 29 May 2010 в 21:14
поделиться

3 ответа

Нет. ELMAH - это HTTP-модуль, и если вы не обслуживаете HTTP-запросы, ELMAH ничего не сделает

5
ответ дан 14 December 2019 в 08:44
поделиться

Пробовали ли вы использовать для инициализации метод static void AppInitialize() {}? Он работает с не-HTTP конечными точками при инициализации вещей, связанных с WCF.

Для получения дополнительной информации см. отличную статью в блоге Венлонг Донга: http://blogs.msdn.com/b/wenlong/archive/2006/01/11/511514.aspx

HTH,

--larsw

0
ответ дан 14 December 2019 в 08:44
поделиться

Это возможно, как показано ниже

Elmah.ErrorLog.GetDefault(null).Log(new Error(ex));

Ссылка: http://groups.google.com/group/elmah/browse_thread/thread/9ea4b51420fd5dfa

Ранее я пробовал это решение для службы WCF в дополнение к режиму совместимости AspNet, и оно не сработало. В IIS размещалась служба WCF, но она работала на сервере разработки, размещая службу WCF в Visual Studio. Следовательно, я должен был удовлетвориться приведенным выше решением.

2
ответ дан 14 December 2019 в 08:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: