Raygun -Anbieter für .NET Framework
Projekte, die mit den folgenden Frameworks erstellt wurden, werden unterstützt:
Installieren Sie das Nuget -Paket in einem Projekt, das eines der oben genannten Frameworks verwendet, und die richtige Montage wird verwiesen.
Für Xamarin haben wir empfohlen, entweder Raygun4xamarin.Forms oder die Mindscape.raygun4net.xamarin.android & mindscape.raygun4net.xamarin.ios.unified Pakete hinzuzufügen.
Für .NET Core- und .NET -Versionen 5.0 oder höher empfehlen wir mit dem Paket von mindscape.raygun4net.netcore.
dotnet add package Mindscape.Raygun4NetWeitere detailliertere Anweisungen zur Verwendung dieses Anbieters finden Sie in den Raygun -Dokumenten.
Beim Senden von Ausnahmen an den Raygun -Dienst ist eine App -API -Taste erforderlich, um die Nachrichten Ihrer Anwendung zuzuordnen.
Wenn Sie eine neue Anwendung in Ihrem Raygun -Dashboard erstellen, wird Ihre App -API -Taste auf der Anweisungsseite angezeigt. Sie können auch die API -Taste finden, indem Sie auf die Schaltfläche "Anwendungseinstellungen" in der Seitenleiste des Raygun -Dashboards klicken.
Die Hauptklassen finden Sie in der mindscape.raygun4net -Namespace.
Der Raygun4Net -Anbieter beinhaltet die Unterstützung für viele .NET -Frameworks. Scrollen Sie nach unten, um Informationen über die Verwendung von Raygun für Ihre Anwendungsart zu finden.
Ab Version 5.0.0 wurde der ASP.NET -Support in ein neues Nuget -Paket verschoben. Wenn Sie ein ASP.NET -Projekt haben, deinstallieren Sie das Raygun4Net -Nuget -Paket und installieren Sie stattdessen das Nuget -Paket von mindscape.raygun4net.aspnetcore.
Sobald das Paket installiert ist, fügen Sie den folgenden Code Ihrer AppSettings.json hinzu (fügen Sie dort einen anderen Konfigurationsart hinzu):
"RaygunSettings" : {
"ApiKey" : " YOUR_APP_API_KEY "
}Konfigurieren Sie die Raygun Middleware, um Ausnahmen zu verarbeiten, die ausgelöst wurden, und senden Sie automatische Ausnahmen.
In Program.cs :
using Mindscape.Raygun4Net.AspNetCore; Zu Ihren Verwendung von Aussagen.builder.Services.AddRaygun(builder.Configuration); .app.UseRaygun(); Nach anderen Ausnahmemethoden EG app.UseDeveloperExceptionPage() oder app.UseExceptionHandler("/Home/Error") . using Mindscape . Raygun4Net . AspNetCore ; var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddRaygun ( builder . Configuration ) ;
/*The rest of your builder setup*/
var app = builder . Build ( ) ;
// Configure the HTTP request pipeline.
if ( ! app . Environment . IsDevelopment ( ) )
{
app . UseExceptionHandler ( "/Error" ) ;
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app . UseHsts ( ) ;
}
app . MapGet ( "/throw" , ( Func < string > ) ( ( ) => throw new Exception ( "Exception in request pipeline" ) ) ) ;
app . UseRaygun ( ) ;
/*The rest of your app setup*/Die oben genannte Einrichtung führt dazu, dass alle nicht behandelten Ausnahmen an Ihr Raygun -Konto gesendet werden, in dem Sie alle Daten zur Überwachung und Absturzberichtsabrechnungen problemlos anzeigen können.
Die Einnahmeknoten von Raygun erfordern TLS 1.2 oder TLS 1.3 Wenn Sie .NET 3.5 oder früher verwenden, müssen Sie diese Protokolle möglicherweise in Ihrer Anwendung aktivieren und Ihr Betriebssystem patchen.
Schauen Sie sich die TLS -Fehlerbehebung bei Microsoft für ihre Empfehlungen an.
Aktualisieren der Protokolleigenschaft im Startcode Ihrer Anwendung.
protected void Application_Start ( )
{
// Enable TLS 1.2 and TLS 1.3
ServicePointManager . SecurityProtocol |= ( ( SecurityProtocolType ) 3072 /*TLS 1.2*/ | ( SecurityProtocolType ) 12288 /*TLS 1.3*/ ) ;
} Suchen oder fügen Sie in Ihrer Web.config -Datei ein <configSections> -Elements, das unter dem Element <configuration> addiert werden sollte, und fügen Sie den folgenden Eintrag hinzu:
<section name="RaygunSettings" type="Mindscape.Raygun4Net.RaygunSettings, Mindscape.Raygun4Net"/>
Verweisen Sie dann, indem Sie nach dem Tag configSections die folgende Zeile hinzufügen.
< RaygunSettings apikey = " YOUR_APP_API_KEY " />Jetzt können Sie Raygun entweder so einrichten, dass sie nicht behandelte Ausnahmen automatisch senden oder/und Ausnahmen manuell senden.
Verwenden Sie das Raygun -HTTP -Modul innerhalb des <configuration> -Elements in Web.config, um nicht behandelte Ausnahmen automatisch zu senden. Dies geschieht etwas anders, je nachdem, welche Version von IIS Sie verwenden. Wenn Sie Zweifel haben, probieren Sie einfach beide aus:
< system .web>
< httpModules >
< add name = " RaygunErrorModule " type = " Mindscape.Raygun4Net.RaygunHttpModule " />
</ httpModules >
</ system .web> Verwenden Sie für IIS 7.0 system.webServer
< system .webServer>
< modules >
< add name = " RaygunErrorModule " type = " Mindscape.Raygun4Net.RaygunHttpModule " />
</ modules >
</ system .webServer>Überall in Ihrem Code können Sie auch Ausnahmeberichte manuell senden, indem Sie einfach eine neue Instanz des Raygunclient erstellen und eine der Send- oder SendInbackground -Methoden anrufen. Dies wird am häufigsten verwendet, um Ausnahmen zu senden, die in einem Try/Catch -Block gefangen sind.
try
{
}
catch ( Exception e )
{
new RaygunClient ( ) . SendInBackground ( e ) ;
}Oder um Ausnahmen in Ihren eigenen Handlern zu senden, anstatt das automatische Setup oben zu verwenden.
protected void Application_Error ( )
{
var exception = Server . GetLastError ( ) ;
new RaygunClient ( ) . Send ( exception ) ;
} Fehler nach dem HTTP -Statuscode ausschließen
Wenn Sie das HTTP -Modul verwenden, können Sie Fehler mit dem HTTP -Statuscode ausschließen, indem Sie eine von der Kommas getrennte Liste von Statuscodes bereitstellen, die in der Konfiguration ignoriert werden sollen. Wenn Sie beispielsweise Fehler ausschließen möchten, die den Code von I'm a Teekanne zurückgeben, können Sie die folgende Konfiguration verwenden.
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeHttpStatusCodes = " 418 " />Fehler ausschließen, die von einem lokalen Ursprung stammen
Schalten Sie diesen Booleschen und das HTTP -Modul nicht an Raygun, wenn die Anforderung aus einem lokalen Ursprung stammt. dh eine Möglichkeit, das lokale Debuggen/die Entwicklung von Raygun zu verhindern, ohne auf Web.config -Transformationen zurückgreifen zu müssen.
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeErrorsFromLocal = " true " />Entfernen Sie sensible Anforderungsdaten
Wenn Sie in einer HTTP -Anfrage sensible Daten haben, die Sie verhindern möchten, an Raygun übertragen zu werden, können Sie Listen von möglichen Schlüssel (Namen) zum Entfernen bereitstellen. Tasten zu ignorieren können auf dem Raygunettings -Tag in web.config angegeben werden (oder Sie können die äquivalenten Methoden auf RayGunclient verwenden, wenn Sie Dinge im Code einrichten). Die verfügbaren Optionen sind:
Diese können als von der Kommas getrennte Liste von Schlüssel eingestellt werden, die ignoriert werden können. Das Einstellen einer Option als * zeigt an, dass alle Schlüssel nicht an Raygun gesendet werden. Das Platzieren von * vor, nach oder an beiden Enden eines Schlüssels führt eine Enden mit, beginnt mit oder enthält den Betrieb. Beispielsweise veranlasst Raygun, alle Formularfelder, die überall im Namen "Passwort" enthalten, ignorieren. Diese Optionen sind nicht fallsempfindlich.
Bereitstellung eines benutzerdefinierten Raygunclient für das HTTP -Modul
Bei der Einrichtung von Raygun über das HTTP -Modul zum automatischen Senden von Ausnahmen müssen Sie möglicherweise das HTTP -Modul mit einer benutzerdefinierten Raygunclient -Instanz bereitstellen, um einige der am Ende dieser Datei beschriebenen optionalen Funktionen zu verwenden. Lassen Sie dazu Ihre HTTP -Anwendung die IrayGunapplication -Schnittstelle implementieren. Implementieren Sie die GeneraterayGunclient -Methode, um eine neue (oder zuvor erstellte) Raygunclient -Instanz zurückzugeben. Das HTTP -Modul verwendet den von dieser Methode zurückgegebenen Raygunclient, um die nicht behandelten Ausnahmen zu senden. In dieser Methode können Sie alle zusätzlichen Optionen in der von Ihnen benötigten RayGunclient -Instanz einrichten. Weitere Informationen zu jeder Funktion finden Sie am Ende dieser Datei.
Ab Version 4.0.0 wurde die MVC -Unterstützung in ein neues Nuget -Paket verschoben. Wenn Sie ein MVC -Projekt haben, deinstallieren Sie das Raygun4Net -Nuget -Paket und installieren Sie stattdessen das Nuget -Paket Mindscape.Raygun4Net.Mvc .
Sobald das Paket installiert ist, finden Sie im Paket ReadMe für Anweisungen zur Konfiguration.
Die MVC- und Webapi -Nuget -Pakete können sicher im selben Projekt installiert werden.
Ab Version 4.0.0 wurde die WebAPI -Unterstützung in ein neues Nuget -Paket verschoben. Wenn Sie ein WebAPI -Projekt haben, deinstallieren Sie das Raygun4Net -Nuget -Paket und installieren Sie stattdessen das Paket von Mindscape.Raygun4Net.WebApi Nuget.
Sobald das Paket installiert ist, finden Sie im Paket ReadMe für Anweisungen zur Konfiguration.
Die MVC- und Webapi -Nuget -Pakete können sicher im selben Projekt installiert werden.
Erstellen Sie eine Instanz von Raygunclient, indem Sie Ihren App -API -Schlüssel im Konstruktor übergeben. Fügen Sie einen Ereignishandler dem Ereignis von DispatcherunHandledexception Ihrer Anwendung bei. Verwenden Sie im Event -Handler die Methode von Raygunclient.send, um die Ausnahme zu senden.
private RaygunClient _client = new RaygunClient ( "YOUR_APP_API_KEY" ) ;
public App ( )
{
DispatcherUnhandledException += OnDispatcherUnhandledException ;
}
void OnDispatcherUnhandledException ( object sender , DispatcherUnhandledExceptionEventArgs e )
{
_client . Send ( e . Exception ) ;
}Erstellen Sie eine Instanz von Raygunclient, indem Sie Ihren App -API -Schlüssel im Konstruktor übergeben. Fügen Sie einen Ereignishandler der Anwendung an. ThreadException Ereignis, bevor Sie application.run (...) aufrufen. Verwenden Sie im Event -Handler die Methode von Raygunclient.send, um die Ausnahme zu senden.
private static readonly RaygunClient _raygunClient = new RaygunClient ( "YOUR_APP_API_KEY" ) ;
[ STAThread ]
static void Main ( )
{
Application . EnableVisualStyles ( ) ;
Application . SetCompatibleTextRenderingDefault ( false ) ;
Application . ThreadException += new ThreadExceptionEventHandler ( Application_ThreadException ) ;
Application . Run ( new Form1 ( ) ) ;
}
private static void Application_ThreadException ( object sender , ThreadExceptionEventArgs e )
{
_raygunClient . Send ( e . Exception ) ;
}Rufen Sie im APP.XAML.CS -Konstruktor (oder in einem beliebigen Haupteintrittspunkt für Ihre Anwendung) die statische Raygunclient.attach -Methode mit Ihrer API -Taste auf.
public App ( )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
}Nach dem Aufrufen der Anhang -Methode können Sie RayGunclient.current verwenden, um die statische Instanz zu erhalten. Dies kann zum manuellen Senden von Nachrichten (über die Sendenmethoden) oder zum Ändern von Optionen wie der Benutzeridentitätszeichenfolge verwendet werden.
Die in WinRT erhältlichen Optionen zum Fangen von nicht behandelten Ausnahmen zu diesem Zeitpunkt sind im Vergleich zu den Optionen im reifen .NET -Framework begrenzter. Das Ereignis von Unhandledexception wird angehoben, wenn ungültige XAML -Ereignisse zusätzlich zu anderen Laufzeitausnahmen, die auf dem Haupt -UI -Thread stattfinden, analysiert werden. Während viele Fehler auf diese Weise aufgegriffen werden und daher an Raygun gesendet werden können, werden andere von diesem Ausnahmebehandler übersehen. Insbesondere asynchrone Code oder Aufgaben, die auf Hintergrund -Threads ausgeführt werden, werden ihre Ausnahmen nicht erfasst.
Eine Problemumgehung für dieses Problem wird mit der Wrap () -Methode bereitgestellt. Mit diesen können Sie den Code übergeben, den Sie an eine Instanz des Raygun -Clients ausführen möchten. Er nennt ihn einfach von einem Try -Catch -Block umgeben. Wenn die Methode, in die Sie bestehen, zu einer Ausnahme führt, dass diese an Raygun übertragen wird, und die Ausnahme wird erneut ausgelöst. Es sind zwei Überladungen verfügbar; Eine für Methoden, die void zurückgeben, und eine für Methoden, die ein Objekt zurückgeben.
Eine weitere Option ist die Verwendung der Fody -Bibliothek und der AsyncerrorHandler -Erweiterung. Dies fängt automatisch asynchronisierte Ausnahmen auf und übergeben sie an einen Handler Ihrer Wahl (der wie oben an Raygun senden würde). Weitere Informationen finden Sie in den Installationsanweisungen und lesen Sie dann das Beispielprojekt, um die Verwendung zu verwenden.
Verwenden Sie in der Haupt-/Eintragsaktivität Ihrer Anwendung die statische Raygunclient.attach -Methode mit Ihrem App -API -Schlüssel. Es gibt auch eine Überladung für die Anhang-Methode, mit der Sie eine Benutzer-Identitäts-Zeichenfolge übergeben können, die für die Verfolgung betroffener Benutzer in Ihrem Raygun-Dashboard nützlich ist.
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;Nach dem Aufrufen der Anhang -Methode können Sie RayGunclient.current verwenden, um die statische Instanz zu erhalten. Dies kann zum manuellen Senden von Nachrichten oder zum Ändern von Optionen wie der Benutzeridentitätszeichenfolge verwendet werden.
Verwenden Sie im Haupteintrittspunkt der Anwendung die statische Raygunclient.attach -Methode mit Ihrer App -API -Taste.
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
UIApplication . Main ( args , null , "AppDelegate" ) ;
}Es gibt auch eine Überladung für die Anhang -Methode, mit der Sie native iOS -Crash -Berichterstattung aktivieren können.
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" , true , true ) ;
UIApplication . Main ( args , null , "AppDelegate" ) ;
}Der erste boolesche Parameter besteht einfach darin, die native iOS -Fehlerberichterstattung zu aktivieren. Der zweite boolesche Parameter ist, ob einige der nativen Signale entlastet werden sollen oder nicht - dies dient dazu, das bekannte Problem der iOS -Crash -Reporter zu lösen, bei dem Null -Referenz -Ausnahmen innerhalb eines Versuchs/Catch -Blocks dazu führen können, dass die Anwendung zum Absturz ist. Durch die Festlegung des zweiten booleschen Parameters auf True übernimmt der verwaltete Code die Sigbus- und SigsegV -iOS -Signale, die das Problem der Null -Referenz löst. Dies verhindert jedoch, dass die nativen Fehler von Sigbus und Sigsegv erkannt werden, was bedeutet, dass sie nicht an Raygun gesendet werden. Aus diesem Grund bieten wir dies als Option an. Wenn Sie also keine Probleme mit Null -Referenz -Ausnahmen haben, die in Try/Catch -Blöcken auftreten und die nativen Fehler maximieren möchten, über die Sie benachrichtigt werden können, und dann den zweiten booleschen Parameter auf False einstellen.
Nach dem Aufrufen der Anhang -Methode können Sie RayGunclient.current verwenden, um die statische Instanz zu erhalten. Dies kann zum manuellen Senden von Nachrichten oder zum Ändern von Optionen wie der Benutzeridentitätszeichenfolge verwendet werden.
Verwenden Sie im Haupteintrittspunkt der Anwendung die statische Raygunclient.attach -Methode mit Ihrer App -API -Taste.
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
NSApplication . Init ( ) ;
NSApplication . Main ( args ) ;
}Nach dem Aufrufen der Anhang -Methode können Sie RayGunclient.current verwenden, um die statische Instanz zu erhalten. Dies kann zum manuellen Senden von Nachrichten oder zum Ändern von Optionen wie der Benutzeridentitätszeichenfolge verwendet werden.
Fügen Sie in einer Raygunclient -Instanz einen Event -Handler an das SendingMessage -Ereignis bei. Dieser Event -Handler wird kurz bevor der Raygunclient eine Ausnahme sendet - entweder automatisch oder manuell. Die Ereignisargumente liefern das RaygunMessage -Objekt, das kurz vorgestellt werden soll. Eine Verwendung für diesen Event -Handler besteht darin, Informationen zum RaygunMessage hinzuzufügen oder zu ändern. Eine weitere Verwendung für diese Methode besteht darin, Ausnahmen zu identifizieren, die Sie nie an Raygun senden möchten, und wenn ja, setze e.cancel = true, um die Sende abzusagen.
Wenn Sie gemeinsame äußere Ausnahmen haben, die eine wertvolle innere Ausnahme einwickeln, nach der Sie es vorziehen möchten, können Sie diese mit der Multi-Parameter-Methode angeben:
raygunClient . AddWrapperExceptions ( typeof ( TargetInvocationException ) ) ;In diesem Fall wird es entfernt und durch die tatsächliche Innerexception, die die Ursache war, entfernt und ersetzt. Beachten Sie, dass HttpunhandleDexception und TargetInvocationException bereits zur Liste der Wrapper -Ausnahme hinzugefügt werden. Sie müssen diese nicht manuell hinzufügen. Diese Methode ist nützlich, wenn Sie über Ihre eigenen Ausnahmen von Wrapper verfügen oder ein Framework Ausnahmen mit eigener Wrapper wirft.
Es gibt eine Eigenschaft namens User auf RayGunclient, die Sie als ID des aktuellen Benutzers einstellen können. Auf diese Weise können Sie die Anzahl der betroffenen Benutzer für jeden Fehler im Raygun -Dashboard sehen.
Wenn Sie detailliertere Informationen über Benutzer (und die Möglichkeit haben, die neue betroffene Benutzerberichterstattungsfunktion zu verwenden, wenn sie veröffentlicht wird), können Sie die UserInfo -Eigenschaft auf dem RayGunclient auf ein neues RaygunidentifierMessage -Objekt einstellen. Diese Klasse hat eine Reihe von Eigenschaften, um den Benutzer, der einen Absturz erlebt hat, zu helfen.
Stellen Sie sicher, dass Sie sich an Datenschutzrichtlinien halten, denen Ihr Unternehmen bei der Verwendung dieser Funktion folgt.
Das einzige erforderliche Feld ist die Kennung.
Identifier ist die eindeutige Kennung von Ihrem System für diesen Benutzer.
IsAnonymous ist ein Flag, das angibt, ob der Benutzer angemeldet ist (oder identifizierbar) ist oder ob er anonym ist. Ein anonymer Benutzer kann weiterhin eine eindeutige Kennung haben.
Email . Wenn Sie E -Mail -Adressen verwenden, um Ihre Benutzer zu identifizieren, können Sie die Kennung auf ihre E -Mail festlegen und diese leer lassen, da wir die Kennung als E -Mail -Adresse verwenden, wenn sie wie eine aussieht und keine E -Mail -Adresse angegeben ist.
FullName den vollständigen Namen des Benutzers.
FirstName den ersten (oder bevorzugten) Namen des Benutzers.
UUID eine Gerätekennung. Könnte verwendet werden, um Benutzer über Geräte hinweg oder Maschinen zu identifizieren, die für viele Benutzer brechen.
raygunClient . User = "[email protected]" ;
// OR
raygunClient . UserInfo = new RaygunIdentifierMessage ( "[email protected]" )
{
IsAnonymous = false ,
FullName = "Robbie Raygun" ,
FirstName = "Robbie"
} ; Standardmäßig sendet Raygun die Montageversion Ihres Projekts mit jedem Bericht.
Wenn Sie Ihren eigenen benutzerdefinierten Versionswert angeben müssen, können Sie dies tun, indem Sie die Anwendungsversion Eigenschaft des Raygunclient festlegen (im Format XXXX, wobei x eine positive Ganzzahl ist).
Wenn Sie Ausnahmen manuell senden, können Sie auch eine willkürliche Liste von Tags (eine Reihe von Zeichenfolgen) und eine Sammlung von benutzerdefinierten Daten (ein Wörterbuch von Objekten) senden. Dies kann mit den verschiedenen Überladungen „SendInbackground -Methoden) erfolgen.
Der Raygun4Net -Anbieter verwendet die Standard -Windows -Proxy -Einstellungen (wie auf der Registerkarte "Verbindungen des Internet Explorer" oder "web.config) beim Senden von Nachrichten an die Raygun -API. Wenn Ihr Proxy Authentifizierungsanmeldeinformationen erfordert, können Sie diese angeben, indem Sie die Eigenschaft ProxyCredentials festlegen, nachdem Sie einen Raygunclient instanziiert und später senden, um sie später zu senden:
var raygunClient = new RaygunClient ( )
{
ProxyCredentials = new NetworkCredential ( "user" , "password" )
} ; Sie können Ihren eigenen Gruppierungsschlüssel angeben, wenn Sie möchten. Wir empfehlen nur, dass Sie Probleme haben, wenn Fehler nicht ordnungsgemäß gruppiert werden.
Fügen Sie in einer Raygunclient -Instanz einen Event -Handler an das CustomGroupingKey -Event hinzu. Dieser Event -Handler wird aufgerufen, nachdem Raygun das RaygunMessage -Objekt gebaut hat, aber bevor das SendingMessage -Ereignis aufgerufen wird. Die Ereignisargumente liefern das RaygunMessage -Objekt, das kurz vorhanden ist, und die ursprüngliche Ausnahme, die es ausgelöst hat. Sie können alles, was Sie generieren möchten, verwenden und durch CustomGroupingKey -Eigenschaft auf den Ereignisargumenten festlegen. Wenn Sie es in Null oder leerer Zeichenfolge einstellen, wird die Ausnahme von Raygun gruppiert. Setzen Sie sie auf etwas, das Raygun mit anderen Ausnahmen gruppiert, die Sie mit diesem Schlüssel gesendet haben.
Der Schlüssel hat eine maximale Länge von 100.
<RaygunSettings apikey="[Raygun4Net api key goes here]" throwOnError="true"/>