我正试图在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; 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)
然而,我还没有解决方案。