Raygun.Blazor
0.0.1
See the version list below for details.
dotnet add package Raygun.Blazor --version 0.0.1
NuGet\Install-Package Raygun.Blazor -Version 0.0.1
<PackageReference Include="Raygun.Blazor" Version="0.0.1" />
paket add Raygun.Blazor --version 0.0.1
#r "nuget: Raygun.Blazor, 0.0.1"
// Install Raygun.Blazor as a Cake Addin #addin nuget:?package=Raygun.Blazor&version=0.0.1 // Install Raygun.Blazor as a Cake Tool #tool nuget:?package=Raygun.Blazor&version=0.0.1
Raygun for Blazor
Usage
Installation
- TODO: Package installation instructions. e.g.
dotnet add package <something>
Setup
Using WebAssemblyHostBuilder
to create the client
Use UseRaygunBlazor
extension to configure the RaygunBlazorClient
and related services for use in a Blazor WebAssembly application.
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.UseRaygunBlazor();
Raygun Settings
Raygun for Blazor uses the appsettings.json
to load configuration settings.
RaygunSettings
will be obtained from the configuration section name Raygun
.
For example:
{
"Raygun": {
"ApiKey": "YOUR_API_KEY",
"CatchUnhandledExceptions": "false",
"LogLevel": "Debug"
}
}
For all configuration values, check the RaygunSettings
class under src/Raygun.Blazor/RaygunSettings.cs
.
See Configuration in ASP.NET Core to learn more about managing application settings.
Initalize the client
Inject the RaygunBlazorClient
in your code:
@inject RaygunBlazorClient raygunClient;
And call to raygunClient.InitializeAsync()
at least once.
This method should be called as early as possible in the course of using the app. The best place to do it is inside the
OnAfterRenderAsync
method of the main layout page. However it will also be called automatically before sending any
exceptions, just in case.
Recording an error
To send an exception to Raygun call to raygunClient.RecordExceptionAsync(...)
This method accepts the following arguments:
ex
: TheException
to send back to Raygun.userDetails
: Optional. Attach user details to exception, takes priority overIRaygunUserProvider
.tags
: Optional. User-specified tags that should be applied to the error.userCustomData
: Optional. Any custom data that you you like sent with the report to assist with troubleshooting.cancellationToken
: Optional. ACancellationToken
to allow you to cancel the current request, if necessary.
Recording a breadcrumb
Records a Breadcrumb to help you track what was going on in your application before an error occurred.
Call to raygunClient.RecordBreadcrumb(...);
This method accepts the following arguments:
message
: The message you want to record for this Breadcrumb.type
: TheBreadcrumbType
for the message. Defaults toBreadcrumbType.Manual
.category
: A custom value used to arbitrarily group this Breadcrumb.customData
: Any custom data you want to record about application state when the Breadcrumb was recorded.
Attaching user details
Raygun for Blazor provides two ways to attach user details to error reports:
- Provide
UserDetails
in theRecordExceptionAsync
method call. - Implement a
IRaygunUserProvider
.
User details class
The following properties can be provided as user details:
UserId
: Unique identifier for the user is the user identifier.IsAnonymous
: Flag indicating if the user is anonymous or not.Email
: User's email address.FullName
: User's full name.FirstName
: User's first name (what you would use if you were emailing them - "Hi {{firstName}}, ...")DeviceId
: Device unique identifier. Useful if sending errors from a mobile device.
All properties are strings except isAnonymous, which is a boolean. As well, they are all optional.
User details in RecordExceptionAsync
The simplest way to attach user details to an error report, is to do it when calling to RecordExceptionAsync
.
Pass a UserDetails
object to the method call:
var userDetails = new UserDetails() { Email = "test@example.com", FullName = "Test User", UserId = "123456" };
await RaygunClient.RecordExceptionAsync(ex, userDetails);
Implementing IRaygunUserProvider
Providing an instance of IRaygunUserProvider
to the Raygun Blazor client allows you to attach user details also to errors reported automatically, for example, captured unhandled exceptions or exceptions from the JavaScript layer.
Implement an IRaygunUserProvider
, for example:
public class MyUserProvider : IRaygunUserProvider
{
public Task<UserDetails?> GetCurrentUser()
{
return Task.FromResult(new UserDetails());
}
}
And inject it into the Raygun Blazor client:
builder.Services.AddSingleton<IRaygunUserProvider, MyUserProvider>();
For a complete example on how to implement a IRaygunUserProvider
with the AuthenticationStateProvider
check the example project file src/Raygun.Samples.Blazor.WebAssembly/Program.cs
.
Internal logger
Raygun for Blazor uses an internal logger to help facilitate the integration of the package.
The default log level is "Warning"
.
To completely disable the internal logger, set the "LogLevel"
setting to "None"
.
For example:
{
"Raygun": {
"LogLevel": "None"
}
}
For all configuration values, check the RaygunLogLevel
enum under src/Raygun.Blazor/Logging/RaygunLogLevel.cs
.
Blazor WebAssembly
Setup
- TODO: setup WebAssembly instructions
Example
Example project is located in src/Raygun.Samples.Blazor.WebAssembly
To run the example:
- Install
dotnet-sdk
minimum version supported in8.0.300
. - Add the
ApiKey
property to insrc/Raygun.Samples.Blazor.WebAssembly/wwwroot/appsettings.json
{
"Raygun": {
"ApiKey": "YOUR_API_KEY"
}
}
- Run
dotnet watch
from the example folder.
A browser window to http://localhost:5010/
should automatically open.
Blazor Server
Installation
- TODO: NuGet install instructions
Setup
Add a scoped RaygunBlazorClient
by calling to UseRaygunBlazor()
with your WebApplication
builder.
var builder = WebApplication.CreateBuilder(args);
...
builder.UseRaygunBlazor();
Accessing RaygunBlazorClient
You can access the RaygunBlazorClient
using @inject
in your code:
@inject RaygunBlazorClient RaygunClient
...
RaygunClient.RecordExceptionAsync(...)
Capturing unhandled exceptions
Use RaygunErrorBoundary
to wrap compoments and capture unhandled exceptions automatically.
Note: You have to set @rendermode="InteractiveServer"
in your HeadOutlet
and Routes
component to enable error capturing, as explained in Handle errors in ASP.NET Core Blazor apps
For example, in your MainLayout.razor
:
@using Raygun.Blazor.Server.Controls
...
<article class="content px-4">
<RaygunErrorBoundary>
@Body
</RaygunErrorBoundary>
</article>
You can set ShowExceptionsUI="true
to display a custom error message:
<RaygunErrorBoundary ShowExceptionUI="true">
<ChildContent>
@Body
</ChildContent>
<ErrorContent>
<p class="errorUI">👾 Error captured by Raygun!</p>
</ErrorContent>
</RaygunErrorBoundary>
Example
Example project is located in src/Raygun.Samples.Blazor.Server
To run the example:
- Install
dotnet-sdk
minimum version supported in8.0.300
. - Add the
ApiKey
property to insrc/Raygun.Samples.Blazor.Server/appsettings.Development.json
{
"Raygun": {
"ApiKey": "YOUR_API_KEY"
}
}
- Run
dotnet watch
from the example folder.
A browser window to http://localhost:5010/
should automatically open.
Publishing
- TODO: Packagre publishing instructions, e.g. NuGet publish instructions
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Ben.Demystifier (>= 0.4.1 && < 1.0.0)
- KristofferStrube.Blazor.Window (>= 0.1.0-alpha.5)
- Microsoft.AspNetCore.Components.Web (>= 8.0.8 && < 9.0.0)
- Microsoft.Extensions.Http (>= 8.0.0 && < 9.0.0)
- Microsoft.JSInterop (>= 8.0.8 && < 9.0.0)
- MyCSharp.HttpUserAgentParser (>= 3.0.4 && <= 4.0.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Raygun.Blazor:
Package | Downloads |
---|---|
Raygun.Blazor.Server
Raygun's Crash Reporting extension for Blazor Server |
|
Raygun.Blazor.WebAssembly
Raygun's Crash Reporting extension for Blazor WebAssembly |
|
Raygun.Blazor.Maui
Raygun's Crash Reporting extension for MAUI Blazor Hybrid apps |
GitHub repositories
This package is not used by any popular GitHub repositories.