Я пытаюсь настроить Raygun.io на службу WCF, и, несмотря на простые инструкции на сайте, мне не повезло, что все работает.Настройка Raygun в службе WCF REST
Я подписался на мой счет, установил Mindscape.Raygun4Net
пакет через NuGet, затем попытался следующие методы:
Web.config подход: Я добавил раздел конфигурации, раздел Raygun с моим филиалом , затем добавлен модуль под номером system.webserver
. Ничего не было зарегистрировано.
Global.asax подход: Я попытался добавить RaygunClient
объект global.asax и затем отправить исключение на Application_Error
. Ничего не было зарегистрировано, и точка останова внутри Application_Error
никогда не попадала.
IErrorHandler подход: Это одна на самом деле есть ошибки при входе в Raygun, но имеет свои собственные проблемы:
Handler Ошибка:
public class RaygunLogger : IErrorHandler
{
private RaygunClient _client = new RaygunClient("5xqBOzTBrzIsS++3vsbFZw==");
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
}
public bool HandleError(Exception error)
{
_client.Send(error);
return false;
}
}
Поведение:
public class RaygunServiceBahavior : IServiceBehavior
{
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints,
BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
IErrorHandler errorHandler = new RaygunLogger();
foreach (ChannelDispatcher channelDispatcher in serviceHostBase.ChannelDispatchers)
{
channelDispatcher.ErrorHandlers.Add(errorHandler);
}
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
}
Поведение Расширение:
public class RaygunBehaviorExtensionElement : BehaviorExtensionElement
{
public override Type BehaviorType
{
get { return typeof(RaygunServiceBahavior); }
}
protected override object CreateBehavior()
{
return new RaygunServiceBahavior();
}
}
Исключение будет выброшен, то метод Handle_Error
будет называться, посылая ошибку Raygun, но она всегда посылает два исключения вместо одного. Первое исключение - ObjectDisposedException: The message object has been disposed
.
Неужели кому-то повезло в создании Raygun на WCF? Если да, то у вас такое же поведение или вы видите что-то, что я делаю по-другому?
Это было исправлено в версии 4.2.1 Raygun4Net. Включение крюка Raygun, как указано выше, теперь должно работать нормально. Эта конкретная ошибка сообщается здесь: https://raygun.io/forums/thread/17338#17488 Другим связанным с исключением было зафиксировано в Raygun4net 5.0.1, как сообщалось здесь: https://raygun.io/ форумы/резьба/19164 # 19781 –