私は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 に送信されますが、常に 1 つではなく 2 つの例外が送信されます。最初の例外はObjectDisposedException: The message object has been disposed
.
WCF で Raygun をセットアップできた人はいますか? もしそうなら、あなたは同じ行動をしていますか、それとも私が違うことをしていることがわかりますか?