2014-10-02 73 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