Настройка Raygun на службе WCF REST

Я пытаюсь настроить https://raygun.io/ на сервис WCF, и, несмотря на простые инструкции на сайте, мне не везет.

Я подписался на свой аккаунт, установил Mindscape.Raygun4Net пакет через Nuget, затем попробовал следующие методы:

Подход Web.config: я добавил раздел конфигурации, раздел Raygun с моим партнерским ключом, затем добавил модуль в system.webserver, Ничего не было зарегистрировано.

Подход Global.asax: я попытался добавить RaygunClient объект в global.asax, а затем отправка исключения на Application_Error, Ничего не было зарегистрировано и точка останова внутри Application_Error никогда не был поражен.

Подход IErrorHandler: На самом деле этот журнал регистрировал ошибки в Raygun, но имел свои проблемы:

Обработчик ошибок:

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

1 ответ

Я попытался сделать что-то очень похожее и закончил с повторным входом в мой метод 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)

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

Другие вопросы по тегам