我正在尝试在 WCF 服务上设置Raygun.io,尽管网站上有简单的说明,但让事情运行起来几乎没有运气。
我已经注册了我的帐户,Mindscape.Raygun4Net
通过 Nuget 安装了软件包,然后尝试了以下方法:
Web.config 方法:
我添加了 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
.
有没有人幸运地在 WCF 上设置了 Raygun?如果是这样,您是否有相同的行为,或者您能看到我做的任何不同的事情吗?