在WCF REST服务上设置Raygun



我正试图在WCF服务上设置Raygun.io,尽管网站上有简单的说明,但我在运行方面运气不佳。

我已经注册了我的帐户,通过Nuget安装了Mindscape.Raygun4Net包,然后尝试了以下方法:

Web.config方法:我添加了配置部分,Raygun部分和我的附属密钥,然后在system.webserver下添加了模块。未记录任何内容。

Global.asax方法:我尝试向global.asax添加一个RaygunClient对象,然后在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

有人有幸在WCF上设置Raygun吗?如果是,你有同样的行为吗?或者你能看到我在做什么不同的事情吗?

我尝试过做一些非常类似的事情,结果我的IErrorHandler的HandleError()方法重新进入,源于Mindscape.Raygun4Net.Builders.RaygunRequestMessageBuilder.GetIpAddress(HttpRequest请求)

它导致的不是对象处理的异常,而是系统。参数异常:

   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)

然而,我还没有解决方案。

最新更新