我试图在WCF服务上设置Raygun.io,尽管网站上有简单的说明,但运气不佳。
我已注册了我的帐户,通过Nuget安装了Mindscape.Raygun4Net
软件包,然后尝试了以下方法:
Web.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?如果是这样,你有相同的行为,或者你能看到我做的不同的事情吗?
答案 0 :(得分:0)
我尝试做了一些非常相似的事情,结果我的IErrorHandler的HandleError()方法重入,源于 Mindscape.Raygun4Net.Builders.RaygunRequestMessageBuilder.GetIpAddress(HttpRequest request)
而不是一个对象处理异常,它导致了一个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)
然而,我还没有解决方案。