- Performance: Resolve Raygun Assembly Version once instead of per message
- See: #556
- Fix: Improve thread safety in ThrottledBackgroundMessageProcessor
- Refactored to avoid racy Count checks by using IsEmpty and returning active worker count from RemoveCompletedTasks
- Optimized ConcurrentDictionary access patterns to reduce unnecessary enumerations
- See: #571
- Performance: Use IsRawDataIgnored setting to control request buffering in RaygunMiddleware
- Only enables
Request.EnableBuffering()whenIsRawDataIgnoredisfalse, reducing overhead in high-throughput applications - See: #574
- Only enables
- Fix: #568 - maxWorkers in ThrottledBackgroundMessageProcessor is not respected and can exceed the desired amount
- See: #569
- Update RaygunLogger.cs to use null coalesce operator because scope data item value can be null (#563) (2025-04-25)
- Docs: Create RELEASING.md (2025-04-15)
Includes changes from v11.2.1
- Fix: #558 ported ThrottledBackgroundMessageProcessor from NetCore to Core (#562) (2025-02-25)
- Fix: add DynamicDependency definition for Windows and Android (#560) (2025-02-18)
- Fix: Add DynamicDependency declaration to preserve MarshalManagedException in iOS and MacOS apps (#559) (2025-02-17)
- Remove target frameworks for the build server (2025-01-08)
- Removed net standard 2.1 target as its implied by 2.0 (2025-01-05)
- Split tests on windows/linux (2025-01-05)
- Fixing the build so it works cross-plat (2025-01-05)
- Add new
IMessageBuilderinterface to allow for custom message builders - New
Mindscape.Raygun4Net.Extensions.Loggingpackage- See: #553
- Skip serializing
WinRT.ObjectReferenceWithContext<WinRT.Interop.IUnknownVftbl>objects attached to the Exception.Data to avoid AccessViolationException.- See: #549
- Fixed Client.Name in Raygun4Net to fix group hasher breaking
- See: #551
- Fixed issue with SimpleJson where Uri/Guid couldn't be serialized.
- See: #546
- Prevented a null reference exception from being thrown after a PortableExecutable (PE) fails to be loaded from disk
- See: #544
- Fix issue with
RaygunClientBasewhereSendInBackgrounddeferred building the message until late, losing HttpContext- See: #540
- Fix issue with
ThrottledBackgroundMessageProcessorwhere it would hold up to 8 task threads even when idle- Task Workers are now created as needed and are disposed when not needed or idle
- See: #542
- Update
RaygunHttpModule(Raygun4Net ASP.NET Framework) to use a singletonRaygunClientinstance- See: #537
- Fix null signature issue when Debug Symbols are set to None and the application is built in Release mode
- See: #535
- Raygun4Net.NetCore
- Deprecated
RaygunClientBase.Send(). The asynchronousSendAsync()should be preferred in all scenarios to avoid potential deadlocks - Improve the potential deadlocks when calling
Send()from a UI Thread by addingConfigureAwait(false)- Note: This does not entirely remove the possibility of deadlocks, and
Send()should not be used within a UI context
- Note: This does not entirely remove the possibility of deadlocks, and
- Deprecated
- Add support for PDB Debug Information in stack traces
- This enables Raygun to leverage Portable PDBs to symbolicate .NET stack traces when PDBs are not included in the build output
- This introduces a dependency on
System.Reflection.Metadata@6.0.1fornetstandard - See: #528
- Add support for storing crash reports offline
- There is a new
OfflineStoreproperty onRaygunSettings, when this is set, it will enable the offline storage - Crashes are stored offline when there is a connectivity issue, or when the Raygun remote server returns a 5xx response
- There is a
IBackgroundSendStrategy, which controls when to attempt to resend offline crash reports. It defaults to every 30 seconds - By default, there is a maximum of 50 offline crashes stored
- See: #530
- There is a new
- Removed marking an unhandled exception in Android as handled, preventing the app from crashing
- See: #531
- Fix issue where uncaught exceptions could sometimes not be reported to Raygun
- See: #529
- Keeps a strong reference to the
OnApplicationUnhandledExceptiondelegate in the client so that reference is alive as long as the client is
- Cleanup of the constructors for Net Core RaygunClient
- See: #525
- Reduce overhead of RaygunBreadcrumb
- See: #524
- Add support for capturing Environment Variables in NetCore
- New setting
EnvironmentVariableswhich takes a list of search terms - Supports Exact, StartsWith, EndsWith, and Contains matching
- See: #523
- New setting
- RaygunClient for NET Core can now be treated as a Singleton
- Changed the Middleware for AspNetCore
- See: #518
- Updated the registration of
.AddRaygun() - Updated the usage of
.UseRaygun() - Removed
RaygunMiddlewareSettingsandRaygunClientProviderin favour ofIRaygunUserProvider - Removed custom code for maintaining request body in the middleware and used
Request.EnableBuffering()instead - Deprecated multiple settings in RaygunClient in favour of using
RaygunSettings - Deprecated
UserInfoproperty in favour ofIRaygunUserProvider - Deprecated
RaygunMiddlewareOptionsin favour ofRaygunSettings - Introduced new
.AddRaygunUserProvider()to register a default implementation - Introduced new
.AddRaygunUserProvider<T>()to register a custom implementation
- Fixed bug with filters where uppercase properties were compared against lowercase filters
- Fixed null reference when accessing CustomData and Tags in RaygunMessage using OnSendingMessage
- Adds Breadcrumbs to NetCore and AspNetCore
- See: #516
- Breadcrumbs are by default local to the asynchronous context using
AsyncLocalBreadcrumbStorage - Additional
InMemmoryBreadcrumbStorageimplemented for global context breadcrumbs
- Fixed
RaygunClientin .NET Framework to correctly gather HTTP data and remove [ThreadStatic] attribute - Fixed
RaygunWebApiClientto correctly get Form data (it was looking at QueryString instead of Form)
- Fixed
RaygunWebApiClientconstructor to createThrottledBackgroundMessageProcessorwhen the empty constructor is used- See: #519
- Remove the usage of
ThreadLocalin the RaygunClient (for .NET Framework)- This change removes the SetCurrentHttpRequest method and uses HttpContext.Current directly
- This does not affect the AspNetCore version as it uses IHttpContextAccessor
- Fixed issue for lock upgrade/recursion exception raised
- See: #513
- SendInBackground will now queue the message to be sent
- Fixes issue in .NET Core for Azure where sending many messages Async can cause SNAT exhaustion
- Fixes issue in .NET Framework for Azure where sending many messages causes many Threads to be used
- Moved .NET Framework projects to new SDK style
- Packages are now built using the new SDK style and nuspecs removed
- Drop support for non-supported Frameworks (.NET Framework 4.6.2 onwards support only)
- This drops support for Client Profile
- Include HttpClient on RaygunClient in AspNetCore project as its a parameter defined in RaygunClientBase
- Fixed memory leak when multiple RaygunClient instances are created
- Added public ctor to allow RaygunClient to accept a custom HttpClient
- Changed the default timeout of HttpClient from 100 seconds to 30 seconds
- Fully support catching unhandled exceptions in NetCore
- Use reflection to discover and attach to exception handlers in Android, iOS, MacCatalyst targets
- Add
UnhandledExceptionBridge.RaiseUnhandledException. This can be called from unsupported platforms to raise and log exceptions via Raygun
- Removed dependency on Microsoft.Win32.Registry for
Mindscape.Raygun4Net.NetCore.Commonpackage
- This release fixes the strong naming and ensures the Assembly version is fixed to the Major version
- Fixed issue with missing dependency on
Mindscape.Raygun4Net.Common
- Fixed Environment Information Memory
- Added cache for Environment Information to reduce overhead
- Added support for Environment Information on Windows/Linux/MacOS
- Changed CPU / OS information to be more accurate / understandable
- Fixed nuspec packaging wrong files
- Correctly populate missing Environment Information
- Deprecated .Signed suffix packages
- Strong Name all packages
- Fixed issue with signed packages for NetCore nugets
- Changed
SendInBackgroundto no longer be blocking