Провайдер Raygun для .NET Framework
Поддерживаются проекты, построенные в следующих рамках:
Установите пакет Nuget в проект, который использует одну из вышеуказанных рамках, и будет ссылаться на правильную сборку.
Для Xamarin мы рекомендовали добавить либо Raygun4xamarin.forms, либо Mindscape.raygun4net.xamarin.android & Mindscape.raygun4net.xamarin.ios.Unified.
Для версий Core и .NET и .NET 5.0 или выше, мы рекомендуем использовать пакет MindScape.raygun4net.netcore.
dotnet add package Mindscape.Raygun4NetСм. Документы Raygun для более подробных инструкций о том, как использовать этого поставщика.
При отправке исключений из службы Raygun для картирования сообщений в вашем приложении необходим ключ API приложения.
Когда вы создаете новое приложение на панели панели Raygun, ваш клавиша API приложения отображается на странице инструкций. Вы также можете найти клавишу API, нажав кнопку «Настройки приложения» в боковой панели панели панели Raygun.
Основные классы можно найти в пространстве имен MindScape.raygun4net.
Провайдер Raygun4net включает в себя поддержку многих фреймворков .NET. Прокрутите вниз, чтобы найти информацию об использовании Raygun для вашего типа приложения.
Начиная с версии 5.0.0, поддержка ASP.NET была перенесена в новый пакет Nuget. Если у вас есть проект ASP.NET, пожалуйста, удалите пакет Nuget Raygun4net и установите вместо этого пакет Nuget.
После установки пакета добавьте следующий код в свой Appsettings.json (если вы используете другой тип конфигурации, добавьте его там):
"RaygunSettings" : {
"ApiKey" : " YOUR_APP_API_KEY "
}Настройте промежуточное программное обеспечение Raygun для обработки исключений, которые были запускаются, и автоматически отправлять невозможные исключения.
В Program.cs :
using Mindscape.Raygun4Net.AspNetCore; к вашему использованию заявлений.builder.Services.AddRaygun(builder.Configuration); Анкетapp.UseRaygun(); После любых других методов исключения исключений, например, app.UseDeveloperExceptionPage() или 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*/Вышеупомянутая настройка приведет к тому, что все невозможные исключения будут отправлены в вашу учетную запись Raygun, где вы можете легко просмотреть все данные о мониторинге ошибок и отчета о сбоях.
Узлы проглатывания Raygun требуют TLS 1.2 или TLS 1.3 Если вы используете .net 3.5 или раньше , вам может потребоваться включить эти протоколы в вашем приложении и исправить вашу ОС.
Проверьте руководство по устранению неисправностей TLS от Microsoft для их рекомендаций.
Обновление свойства протокола в коде запуска вашего приложения.
protected void Application_Start ( )
{
// Enable TLS 1.2 and TLS 1.3
ServicePointManager . SecurityProtocol |= ( ( SecurityProtocolType ) 3072 /*TLS 1.2*/ | ( SecurityProtocolType ) 12288 /*TLS 1.3*/ ) ;
} В вашем файле web.config найдите или добавьте элемент <configSections> , который должен быть вложен в элемент <configuration> , и добавьте следующую запись:
<section name="RaygunSettings" type="Mindscape.Raygun4Net.RaygunSettings, Mindscape.Raygun4Net"/>
Затем ссылайтесь на нее, добавив следующую строку где -то после тега configSections .
< RaygunSettings apikey = " YOUR_APP_API_KEY " />Теперь вы можете либо настроить Raygun для автоматического отправки невозможных исключений, либо/и отправить исключения вручную.
Чтобы автоматически отправлять нездоровые исключения, используйте модуль Raygun HTTP в элементе <configuration> в web.config. Это делается немного по -другому в зависимости от того, какую версию IIS вы используете. Если вы сомневаетесь, просто попробуйте их обоих:
< system .web>
< httpModules >
< add name = " RaygunErrorModule " type = " Mindscape.Raygun4Net.RaygunHttpModule " />
</ httpModules >
</ system .web> Для IIS 7.0, используйте system.webServer
< system .webServer>
< modules >
< add name = " RaygunErrorModule " type = " Mindscape.Raygun4Net.RaygunHttpModule " />
</ modules >
</ system .webServer>В любом месте вашего кода вы также можете отправлять отчеты об исключении вручную, просто создав новый экземпляр Raygunclient и позвонить в один из методов Send или Sendackackground. Это чаще всего используется для отправки исключений, пойманных в блоке Try/Catch.
try
{
}
catch ( Exception e )
{
new RaygunClient ( ) . SendInBackground ( e ) ;
}Или отправить исключения в ваших собственных обработчиках, а не использование автоматической настройки выше.
protected void Application_Error ( )
{
var exception = Server . GetLastError ( ) ;
new RaygunClient ( ) . Send ( exception ) ;
} Исключить ошибки по коду статуса HTTP
При использовании модуля HTTP, вы можете исключить ошибки с помощью их кода состояния HTTP, предоставив отдельный список кодов состояния, чтобы игнорировать в конфигурации. Например, если вы хотите исключить ошибки, которые возвращают код ответа I I I A Teapot, вы можете использовать конфигурацию ниже.
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeHttpStatusCodes = " 418 " />Исключить ошибки, которые происходят из местного происхождения
Переключить этот логический модуль, и модуль HTTP не отправят ошибки Raygun, если запрос возник из локального происхождения. т.е. способ предотвратить уведомление местной отладки/разработки Raygun без необходимости прибегать к Web.config Transforms.
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeErrorsFromLocal = " true " />Удалить конфиденциальные данные запроса
Если у вас есть конфиденциальные данные в HTTP -запросе, который вы хотите предотвратить передачу в Raygun, вы можете предоставить списки возможных ключей (имен) для удаления. Ключи к игнорированию могут быть указаны на теге RaygunSettings в web.config, (или вы можете использовать эквивалентные методы на Raygunclient, если вы настраиваете вещи в коде). Доступные варианты:
Это может быть установлено, чтобы быть отдельным списком ключей, чтобы игнорировать. Установка опции как * будет указывать, что все ключи не будут отправлены в Райгун. Размещение * до, после или на обоих концах ключа выполнит концы с запусками или содержит операцию соответственно. Например, игнорируйте Ignoreformfieldnames = "*Password*" Raygun игнорирует все поля формы, которые содержат «пароль» в любом месте в имени. Эти варианты не чувствительны к случаю.
Предоставление пользовательского raygunclient для модуля HTTP
Иногда при настройке Raygun с использованием модуля HTTP для автоматической отправки исключений вам может потребоваться предоставить модуль HTTP пользовательским экземпляром Raygunclient, чтобы использовать некоторую дополнительную функцию, описанную в конце этого файла. Для этого получите свое приложение HTTP для реализации интерфейса Iraygunapplication. Реализуйте метод GeneraterAygunclient, чтобы вернуть новый (или ранее созданный) экземпляр Raygunclient. Модуль HTTP будет использовать Raygunclient, возвращаемый из этого метода, чтобы отправить невозможные исключения. В этом методе вы можете настроить любые дополнительные параметры в экземпляре Raygunclient, который вам нужен - больше информации о каждой функции описана в конце этого файла.
На момент версии 4.0.0 поддержка MVC была перенесена в новый пакет Nuget. Если у вас есть проект MVC, пожалуйста, удалите пакет Nuget Raygun4net и установите пакет Mindscape.Raygun4Net.Mvc Nuget.
После установки пакета см. Пакет Readme для инструкций по конфигурации.
Пакеты MVC и Webapi Nuget могут быть безопасно установить в том же проекте.
Начиная с версии 4.0.0, поддержка WebAPI была перенесена в новый пакет Nuget. Если у вас есть проект WebAPI, пожалуйста, удалите пакет Nuget Raygun4net и установите пакет Mindscape.Raygun4Net.WebApi Nuget.
После установки пакета см. Пакет Readme для инструкций по конфигурации.
Пакеты MVC и Webapi Nuget могут быть безопасно установить в том же проекте.
Создайте экземпляр Raygunclient, передавая ключ API приложения в конструкторе. Прикрепите обработчик событий к событию DispatcherunHandledException вашего приложения. В случае обработчика событий используйте метод raygunclient.send, чтобы отправить исключение.
private RaygunClient _client = new RaygunClient ( "YOUR_APP_API_KEY" ) ;
public App ( )
{
DispatcherUnhandledException += OnDispatcherUnhandledException ;
}
void OnDispatcherUnhandledException ( object sender , DispatcherUnhandledExceptionEventArgs e )
{
_client . Send ( e . Exception ) ;
}Создайте экземпляр Raygunclient, передавая ключ API приложения в конструкторе. Прикрепите обработчик событий к событию приложения. В случае обработчика событий используйте метод raygunclient.send, чтобы отправить исключение.
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 ) ;
}В конструкторе app.xaml.cs (или в любой основной точке входа в ваше приложение) вызовите статический метод raygunclient.attach, используя ключ API.
public App ( )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
}В любой момент после вызова метода прикрепления вы можете использовать raygunclient.current для получения статического экземпляра. Это можно использовать для ручной отправки сообщений (с помощью методов отправки) или изменений, таких как строка идентификации пользователя.
Варианты, доступные в Winrt, для того, чтобы поймать невозможные исключения на данный момент, более ограничены по сравнению с опциями в более зрелых .NET Framework. Событие UnkendledExcection будет поднято, когда анализируется недействительный XAML, в дополнение к другим исключениям во время выполнения, которые происходят в основном потоке пользовательского интерфейса. В то время как многие ошибки будут предприняты таким образом и поэтому смогут быть отправлены в Райгун, другие обработчики исключений будут пропущены. В частности, асинхронный код или задачи, которые выполняют в фоновых потоках, не будут захватывают их исключения.
Обходной путь для этой проблемы обеспечивается методом wrap (). Они позволяют вам передать код, который вы хотите выполнить в экземпляр клиента Raygun - он просто назовет его в окружении блока Try -Catch. Если метод, в котором вы проходите, приведет к брошению исключения, это будет передаваться в Raygun, и исключение снова будет брошено. Доступны две перегрузки; один для методов, которые возвращают пустоту, а другой для методов, которые возвращают объект.
Другой вариант - использовать библиотеку Fody и ее асинкурторное расширение. Это автоматически поймает асинхронные исключения и передаст их обработке по вашему выбору (который отправит Рэйгуну, как указано выше). Смотрите инструкции по установке здесь, затем ознакомьтесь с образцом проекта для использования.
В основной/входной деятельности вашего приложения используйте метод статического raygunclient.attach, используя клавишу API приложения. Существует также перегрузка для метода прикрепления, который позволяет передать строку идентичности пользователя, которая полезна для отслеживания затронутых пользователей на вашей панели Raygun.
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;В любой момент после вызова метода прикрепления вы можете использовать raygunclient.current для получения статического экземпляра. Это можно использовать для вручную отправлять сообщения или изменения параметров, таких как строка идентификации пользователя.
В основной точке входа приложения используйте метод статического raygunclient.attach, используя ключ вашего приложения API.
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
UIApplication . Main ( args , null , "AppDelegate" ) ;
}Существует также перегрузка для метода прикрепления, который позволяет вам включить нативные отчеты о сбоях iOS.
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" , true , true ) ;
UIApplication . Main ( args , null , "AppDelegate" ) ;
}Первый логический параметр - это просто включить нативную отчетность по ошибкам iOS. Второй логический параметр заключается в том, стоит ли угнать некоторые из собственных сигналов - это должно решить известную проблему репортера с аварийным сбоем в iOS, где нулевые ссылки на блок Try/Catch могут привести к сбою приложения. Установив второй логический параметр для True, управляемый код займет сигналы Sigbus и Sigsegv iOS, которые решают нулевую справочную проблему. Тем не менее, выполняя это предотвращает обнаружение численных ошибок Sigbus и Sigsegv, а это означает, что они не отправляются в Райгун. Вот почему мы предоставляем это как вариант - поэтому, если у вас нет проблем с нулевыми ссылками, возникающими в блоках Try/Catch, и вы хотите максимизировать собственные ошибки, о которых вы можете быть уведомлены, затем установите второй логический параметр на False.
В любой момент после вызова метода прикрепления вы можете использовать raygunclient.current для получения статического экземпляра. Это можно использовать для вручную отправлять сообщения или изменения параметров, таких как строка идентификации пользователя.
В основной точке входа приложения используйте метод статического raygunclient.attach, используя ключ вашего приложения API.
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
NSApplication . Init ( ) ;
NSApplication . Main ( args ) ;
}В любой момент после вызова метода прикрепления вы можете использовать raygunclient.current для получения статического экземпляра. Это можно использовать для вручную отправлять сообщения или изменения параметров, таких как строка идентификации пользователя.
На экземпляре Raygunclient прикрепите обработчик событий к событию SendingMessage. Этот обработчик событий будет вызван незадолго до того, как Raygunclient отправит исключение - либо автоматически, либо вручную. Аргументы событий предоставляют объект Raygunmessage, который собирается быть отправленным. Одним из использований для этого обработчика событий является добавление или изменение любой информации о Raygunmessage. Другое использование для этого метода - определить исключения, которые вы никогда не хотите отправлять в Raygun, и если да, установите e.cancel = true, чтобы отменить отправку.
Если у вас есть общие внешние исключения, которые обертывают ценное внутреннее исключение, которое вы предпочитаете группировать, вы можете указать их, используя метод мультипараметра:
raygunClient . AddWrapperExceptions ( typeof ( TargetInvocationException ) ) ;В этом случае, если произойдет целевая инвентаризация, оно будет удалено и заменено фактическим иннтекспением, которое было причиной. Обратите внимание, что httpunhandledexception и targetinvocationException уже добавляются в список исключений обертки; Вам не нужно добавлять эти вручную. Этот метод полезен, если у вас есть собственные исключения из обертки, или Framework бросает исключения, используя свою собственную обертку.
На Raygunclient есть свойство с именем User , которое вы можете установить в качестве идентификатора текущего пользователя. Это позволяет вам увидеть количество затронутых пользователей для каждой ошибки на панели панели Raygun.
Если вам нужна более подробная информация об пользователях (и возможность использовать новую пострадавшую функцию отчетности пользователей при ее выпуске), вы можете установить свойство UserInfo на Raygunclient для нового объекта RaygunidentifierMessage. Этот класс имеет ряд свойств, чтобы помочь идентификатору пользователя, который испытал сбой.
Обязательно соблюдайте любые политики конфиденциальности, которой следует ваша компания при использовании этой функции.
Единственным необходимым поле является идентификатор.
Identifier - это уникальный идентификатор от вашей системы для этого пользователя.
IsAnonymous - это флаг, указывающий, входит ли пользователь (или идентифицируется) или является ли он анонимными. Анонимный пользователь все еще может иметь уникальный идентификатор.
Email адрес электронной почты по электронной почте. Если вы используете адреса электронной почты, чтобы идентифицировать своих пользователей, не стесняйтесь установить идентификатор на их электронную почту и оставить этот пробел, так как мы будем использовать идентификатор в качестве адреса электронной почты, если он выглядит как один, и ни один адрес электронной почты не указан.
FullName имя пользователя.
FirstName первого (или предпочтительного) имени пользователя.
UUID идентификатор устройства. Может быть использован для идентификации пользователей на разных устройствах или машинах, которые разбиваются для многих пользователей.
raygunClient . User = "[email protected]" ;
// OR
raygunClient . UserInfo = new RaygunIdentifierMessage ( "[email protected]" )
{
IsAnonymous = false ,
FullName = "Robbie Raygun" ,
FirstName = "Robbie"
} ; По умолчанию Raygun отправит версию вашего проекта в сборе с каждым отчетом.
Если вам нужно предоставить собственное значение версии, вы можете сделать это, установив свойство ApplicationVersion raygunclient (в формате xxxx, где x является положительным целым числом).
При отправке исключений вручную вы также можете отправить произвольный список тегов (массив строк) и набор пользовательских данных (словарь любых объектов). Это может быть сделано с помощью различных перегрузки метода Send и Sendbackground.
Поставщик Raygun4net использует настройки Proxy Windows по умолчанию (как установлено на вкладке подключения Internet Explorer или Web.config) при отправке сообщений в API Raygun. Если ваш прокси требует учетных данных аутентификации, вы можете предоставить их, установив свойство ProxyCredentials после создания Raygunclient, то используя его для отправки позже:
var raygunClient = new RaygunClient ( )
{
ProxyCredentials = new NetworkCredential ( "user" , "password" )
} ; Вы можете предоставить свой собственный ключ группировки, если хотите. Мы рекомендуем только это у вас есть проблемы с ошибками, которые не сгруппированы должным образом.
На экземпляре Raygunclient прикрепите обработчик событий к событию CustomGroupingKey. Этот обработчик событий будет вызван после того, как Raygun построил объект Raygunmessage, но до того, как будет вызван событием SendingMessage. Аргументы событий предоставляют объект Raygunmessage, который собирается быть отправленным, и исходное исключение, которое вызвало его. Вы можете использовать все, что вам нравится, чтобы сгенерировать ключ, и установить его на собственность CustomGroupingKey в аргументах события. Установка его на нулевую или пустую строку оставит исключение, чтобы быть сгруппированным Raygun, установление его на что -то приведет к тому, что Raygun будет сгруппировать его с другими исключениями, которые вы отправили с этим ключом.
Ключ имеет максимальную длину 100.
<RaygunSettings apikey="[Raygun4Net api key goes here]" throwOnError="true"/>