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
315 posts
Adding Cloudflare Turnstile to an ASP.NET Core website

We have been using Captchas for several years on elmah.io. Not to annoy users (they ARE annoying, I know) but to avoid bots trying to automate password reset requests and similar. We have been using reCAPTCHA from Google but after they announced moving this feature to Google Cloud, we ...

The NuGet packages we use to build elmah.io revisited

Four years ago, I wrote the blog post The NuGet packages we use to build elmah.io. Since then, we have made several changes to our tech stack as well as upgraded to recent versions of .NET. For this post, I'll update you on the packages we use ...

Revisiting improved HTTP logging in ASP.NET Core 8

A few years ago, I had a play with HTTP logging added in ASP.NET Core 6. ASP.NET Core 8 introduced a set of additional configuration options that I believe are essential to make this feature usable. I will recap the details from the previous post below, but for ...

Understanding .NET stack traces - A guide for developers

Stack traces are important for debugging and understanding exceptions in .NET applications. They provide detailed information about the error and the call stack when an exception occurs, allowing us as developers to investigate why an error happened. In this post, I'll walk you through the basics of reading ...

Lessons learned after migrating Azure Functions to Isolated Functions on .NET 8

The In-process model of running Azure Functions is being retired in favor of the Isolated model in two years. A lot of components on elmah.io are running on Azure Functions. To ensure we are running on the most modern and supported platform (also in two years), we have spent ...

"Secret" elmah.io features #5 - Breadcrumbs leading up to errors

It's time for a new post in the series about "secret" elmah.io features. This is the series where I highlight features that some of you may already know while others don't. For today's post, I want to highlight a feature that ...

Understanding the Exception.HResult property in C#

Since launching support for showing parsed HRESULT on the elmah.io UI, we have received a few questions about HRESULTs in general. While I understand that HRESULTs is probably not on everyone's radar, I think a general understanding will help with debugging. In this post, I'll ...

HTTP Error 500.19 - Internal Server Error

I was just asked how to troubleshoot an HTTP Error 500.19 - Internal Server Error when trying to launch an ASP.NET Core website on IIS. I have seen this error too many times for both ASP.NET and ASP.NET Core so decided to write a blog post ...

"Secret" elmah.io features #4 - Get help from AI and ChatGPT

In this fourth post in the series of "secret" elmah.io features, I want to introduce you to one of several AI features available on elmah.io. We have had machine learning features like automatic bot detection and spike identification for years. But a recent addition to the ...