2014-10-02 3 views
1

Я пытаюсь настроить 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? Если да, то у вас такое же поведение или вы видите что-то, что я делаю по-другому?

ответ

0

Я пытался сделать что-то очень похожее и в конечном итоге с моей IErrorHandler в HandleError() метод Реентрантная, происходящий из Mindscape.Raygun4Net.Builders.RaygunRequestMessageBuilder.GetIpAddress (HttpRequest запросу)

Вместо того объекта, расположенный за исключением это вызвало исключение System.Argument:

at System.ServiceModel.Dispatcher.ErrorBehavior.HandleErrorCommon(Exception error, ErrorHandlerFaultInfo&amp;amp; faultInfo)</StackTrace><ExceptionString>System.ArgumentException: Value does not fall within the expected range. 
    at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) 
    at System.Web.Hosting.IIS7WorkerRequest.GetServerVariableInternal(String name) 
    at System.Web.HttpRequest.AddServerVariableToCollection(String name) 
    at System.Web.HttpRequest.FillInServerVariablesCollection() 
    at System.Web.HttpServerVarsCollection.Get(String name) 
    at Mindscape.Raygun4Net.Builders.RaygunRequestMessageBuilder.GetIpAddress(HttpRequest request) 

У меня пока нет решения.

+1

Это было исправлено в версии 4.2.1 Raygun4Net. Включение крюка Raygun, как указано выше, теперь должно работать нормально. Эта конкретная ошибка сообщается здесь: https://raygun.io/forums/thread/17338#17488 Другим связанным с исключением было зафиксировано в Raygun4net 5.0.1, как сообщалось здесь: https://raygun.io/ форумы/резьба/19164 # 19781 –

Смежные вопросы