Thomas Ardal

Thomas Ardal

Meet Thomas, the founder and developer behind elmah.io. Thomas blogs about everything technical from C# and ASP.NET Core to machine learning.

Denmark
320 posts
6 free tools for .NET developers

elmah.io's six free .NET tools include a Web.config Validator, Stack Trace Formatter, Web.config Transformation Tester, Appsettings.json Validator, Multiline String Converter, and a browser-based JSON Formatter that keeps your data local while validating configs and formatting stack traces. ...

How to map IPs to country for free with .NET and IP2Location 🌎

Shows how to map an IP address to a country for free in .NET using IP2Location's LITE database and the IP2Location.IPGeolocation NuGet package, including downloading the IPV4 BIN file, querying with the Component class, and reading CountryLong/CountryShort from the result. ...

Introducing support for Xamarin

Announces elmah.io's Xamarin and Xamarin.Forms error logging support via the Elmah.Io.Xamarin NuGet package, showing how to call ElmahIoXamarin.Init, catch unhandled Android exceptions, log manually with the Log extension method, and filter mobile messages with the new Is Mobile UI filter. ...

How to implement two-factor authentication in ASP.NET Core 🔑

Walks through adding 2FA to an ASP.NET Core app using Brandon Potter's GoogleAuthenticator NuGet package, including a TwoFactorAuthenticationController with an Enable action, generating a QR setup code with GenerateSetupCode, and storing a base32-encoded secret on the user object. ...

Export data from Google Analytics with .NET 💾

Explains exporting Google Analytics data in a .NET 5 console app using Google's Google.Apis.AnalyticsReporting.v4 NuGet package, covering creating a service account and P12 key, granting Read and Analyze access, and building a ServiceAccountCredential.Initializer to call the Analytics Reporting API. ...

Rate limiting API requests with ASP.NET Core and AspNetCoreRateLimit 💻

Shows how elmah.io rate-limits its API to 500 requests per minute and 3,600 per hour per API key using Stefan Prodan's AspNetCoreRateLimit package, covering in-memory ClientRateLimitOptions, UseClientRateLimiting middleware, and a custom ElmahIoRateLimitConfiguration for grouping requests by key. ...

The NuGet packages we use to build elmah.io

An alphabetical rundown of core NuGet packages behind elmah.io: AspNetCoreRateLimit for API throttling, AWSSDK.SimpleEmail with MimeKit for sending mail, BundlerMinifier.TagHelpers for JS/CSS bundling, Google.Apis.AnalyticsReporting.V4 for Analytics exports, and GoogleAuthenticator for 2FA. ...

Building and testing on multiple .NET versions with GitHub Actions

Shows how elmah.io migrated CI/CD from AppVeyor to GitHub Actions, configuring actions/setup-dotnet to build and test a class library multi-targeting netcoreapp2.1, netcoreapp3.1, and net5.0, and fixing the MSB3644 reference-assemblies error by installing the .NET 5 SDK. ...

Major updates to elmah.io Uptime Monitoring

Details elmah.io Uptime Monitoring's new configurable-regions feature: pick up to 5 of 9 ping regions (adding US Central, UK West, Europe West, and Brazil South), tune the failure threshold, and read a new Explanation control showing how settings affect monitoring of each endpoint. ...