在WCF REST服务上设置Raygun
问题描述:
我试图在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?如果是这样,你是否有同样的行为,或者你能看到我的行为有什么不同?
答
我试着做一些非常相似,并从 Mindscape.Raygun4Net.Builders.RaygunRequestMessageBuilder.GetIpAddress(HttpRequest的要求)
不是一个对象设置例外,而结束了与我的IErrorHandler的的HandleError()方法重入,始发它引起System.Argument异常:
at System.ServiceModel.Dispatcher.ErrorBehavior.HandleErrorCommon(Exception error, ErrorHandlerFaultInfo&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)
但是,我还没有解决方案。
这已在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