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
HTTP Error 500.19 - The requested page cannot be accessed

Troubleshoots HTTP Error 500.19 on IIS by walking through its most common causes: malformed XML in web.config, missing IIS_IUSRS read/execute permissions (fixed via icacls and verified with Get-Acl), and incorrect system.webServer sections checked using the appcmd list config command. ...

Predicting Die Hard fans with ML.NET and C#

Builds a binary classification model with the Microsoft.ML NuGet package in a .NET console app, training on a MoviePreferenceInput POCO scoring Star Wars, Armageddon, and Sleepless in Seattle to predict ILikeDieHard via AveragedPerceptron, saving and retraining from a diehard-model.zip file. ...

Monitoring Windows Services implemented in .NET

Covers monitoring Windows Services with built-in Windows tools: services.msc (Service Control Manager) to check status, startup type, and logon account, and perfmon.msc (Performance Monitor) to add per-instance counters and track memory usage over time in order to spot memory leaks. ...

Managing bounced emails with AWS SES and Azure Functions

Builds an HTTP-triggered Azure Function, wired for DI via a Startup.cs and the Microsoft.Azure.Functions.Extensions NuGet package, that acts as an AWS SES bounce-notification endpoint handling both the SubscriptionConfirmation handshake and Notification bounce events to build a local bounce list. ...

Monitoring .NET scheduled tasks - Tools and alternatives

Guides monitoring Windows Scheduled Tasks, from checking Last Run Time and Last Run Result columns in Task Scheduler and enabling Task History logged under Event Viewer's Applications and Services Logs > Microsoft > Windows > TaskScheduler > Operational, to automating alerts for missed nightly jobs. ...

How we do bundling and minification in ASP.NET Core

Replaces ASP.NET Core's default BuildBundlerMinifier NuGet package with a build-server-only bundling and minification pipeline driven by bundleconfig.json and gulp, keeping minified CSS/JS bundles out of Git and avoiding a duplicated file list between bundleconfig.json and Razor tag helpers. ...

Error monitoring and detailed logging of an ASP.NET Core application with PostSharp and elmah.io

Wires PostSharp Logging and Serilog into an ASP.NET Core app for detailed per-method debug traces plus error monitoring on elmah.io, installing Serilog.Sinks.ElmahIO and Elmah.Io.AspNetCore.Serilog, configuring ElmahIoSinkOptions at Warning level, and calling app.UseElmahIoSerilog() in Startup. ...

Moq vs NSubstitute vs FakeItEasy - Which one to choose?

Compares the three major .NET mocking frameworks, Moq, NSubstitute, and FakeItEasy, side by side using a shared IMovieScore/IsGoodMovie example built with constructor injection and NUnit TestCase attributes, showing how each framework's syntax differs for stubbing return values and verifying calls. ...

Facebook and LinkedIn groups for .NET developers

Lists eight active .NET and ASP.NET Core communities on Facebook and LinkedIn worth joining, including the nearly 300,000-member .NET Developers group on LinkedIn, ASP.NET Core groups on both platforms, C#/.NET Q&A groups on Facebook, the Azure Developers group on LinkedIn, and local Meetup groups. ...