2014-10-02 78 views
1

我试图在WCF服务上设置Raygun.io,尽管网站上有简单的说明,但运行得很顺利。在WCF REST服务上设置Raygun

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

Web.config文件的方法: 我增加了配置部分,与我的联盟的Raygun节键,然后将该模块添加到​​下。没有记录。

的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

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

回答

0

我试着做一些非常相似,并从 Mindscape.Raygun4Net.Builders.RaygunRequestMessageBuilder.GetIpAddress(HttpRequest的要求)

不是一个对象设置例外,而结束了与我的IErrorHandler的的HandleError()方法重入,始发它引起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

这已在Raygun4Net 4.2.1版中修复。如上所示放置raygun钩现在应该可以正常工作。 这个特定的错误是在这里报道: https://raygun.io/forums/thread/17338#17488 另一个相关的异常被固定在Raygun4net 5.0.1报告如下: https://raygun.io/论坛/线程/ 19164#19781 – 2015-04-27 05:07:10