---
title: "Swimburger - Blog - C# - Page 2"
description: "Swimburger.net is a blog about .NET, cloud, web development, and whatever comes across Swimburger's plate. Swimburger.net is run by Niels Swimberghe."
canonical: "https://swimburger.net/blog/csharp/page/2"
---

[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png 500w" sizes="250px" width="250" height="250" alt="Twilio SendGrid logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## How to send recurring emails in C# .NET using SendGrid and Quartz.NET

1/19/2022 - .NET

Learn how to send recurring emails with C# .NET using Quartz.NET and SendGrid's APIs



](/blog/dotnet/how-to-send-recurring-emails-in-csharp-dotnet-using-sendgrid-and-quartzdotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png 500w" sizes="250px" width="250" height="250" alt="Twilio SendGrid logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Send Emails using the SendGrid API with .NET 6 and C#

12/13/2021 - .NET

Learn how to send emails using the SendGrid API with a .NET 6 console application and C#



](/blog/dotnet/send-emails-using-the-sendgrid-api-with-dotnet-6-and-csharp)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/etqdhqzv/dotnet-bot_presenting.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/etqdhqzv/dotnet-bot_presenting.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/etqdhqzv/dotnet-bot_presenting.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/etqdhqzv/dotnet-bot_presenting.png 500w" sizes="250px" width="250" height="250" alt=".NET bot writing on whitebpard" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Generic Linear Search/Sequential Search for a sequence in C# .NET

8/6/2021 - .NET

To practice algorithms and data structures, I reimplemented Linear Search/Sequential Search for a sequence using C#'s generic type parameters.



](/blog/dotnet/generic-linear-search-sequential-search-for-a-sequence-in-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/uwkijblh/dotnet-bot_presenting.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/uwkijblh/dotnet-bot_presenting.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/uwkijblh/dotnet-bot_presenting.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/uwkijblh/dotnet-bot_presenting.png 500w" sizes="250px" width="250" height="250" alt=".NET bot writing on whitebpard" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Generic Boyer–Moore–Horspool algorithm in C# .NET

8/6/2021 - .NET

To practice algorithms and data structures, I reimplemented Boyer–Moore–Horspool algorithm for a sequence using C#'s generic type parameters.



](/blog/dotnet/generic-boyer-moore-horspool-algorithm-in-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/dq2fnspy/dotnet-bot_presenting.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/dq2fnspy/dotnet-bot_presenting.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/dq2fnspy/dotnet-bot_presenting.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/dq2fnspy/dotnet-bot_presenting.png 500w" sizes="250px" width="250" height="250" alt=".NET bot writing on whitebpard" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Generic Binary Search in C# .NET

8/5/2021 - .NET

To practice algorithms and data structures, I reimplemented binary search using C#'s generic type parameters.



](/blog/dotnet/generic-binary-search-in-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/yuojqreb/dotnet-bot_presenting.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/yuojqreb/dotnet-bot_presenting.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/yuojqreb/dotnet-bot_presenting.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/yuojqreb/dotnet-bot_presenting.png 500w" sizes="250px" width="250" height="250" alt=".NET bot writing on whitebpard" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Generic Insertion Sort in C# .NET

8/4/2021 - .NET

To practice algorithms and data structures, I reimplemented insertion sort using C#'s generic type parameters.



](/blog/dotnet/generic-insertion-sort-in-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/hz3pd4p2/dotnet-bot_presenting.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/hz3pd4p2/dotnet-bot_presenting.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/hz3pd4p2/dotnet-bot_presenting.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/hz3pd4p2/dotnet-bot_presenting.png 500w" sizes="250px" width="250" height="250" alt=".NET bot writing on whitebpard" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Generic Quick Sort in C# .NET

8/4/2021 - .NET

To practice algorithms and data structures, I reimplemented Quick Sort using C#'s generic type parameters.



](/blog/dotnet/generic-quick-sort-in-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/xphezdes/dotnet-bot_presenting.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/xphezdes/dotnet-bot_presenting.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/xphezdes/dotnet-bot_presenting.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4981684981684982x0.4981684981684982/media/xphezdes/dotnet-bot_presenting.png 500w" sizes="250px" width="250" height="250" alt=".NET bot writing on whitebpard" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Generic Merge Sort in C# .NET

8/3/2021 - .NET

To practice algorithms and data structures, I reimplemented merge sort using C#'s generic type parameters.



](/blog/dotnet/generic-merge-sort-in-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover/media/415kogkd/dotnet-bot_presenting.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover/media/415kogkd/dotnet-bot_presenting.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover/media/415kogkd/dotnet-bot_presenting.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover/media/415kogkd/dotnet-bot_presenting.png 500w" sizes="250px" width="250" height="250" alt=".NET bot writing on whitebpard" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Generic Bubble Sort in C# .NET

8/1/2021 - .NET

To practice algorithms and data structures, I reimplemented bubble sort using C#'s generic type parameters.



](/blog/dotnet/generic-bubble-sort-in-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5002459542608448/media/23pjfhze/chrome-csharp-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5002459542608448/media/23pjfhze/chrome-csharp-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5002459542608448/media/23pjfhze/chrome-csharp-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5002459542608448/media/23pjfhze/chrome-csharp-square.png 500w" sizes="250px" width="250" height="250" alt="C# and Chrome logo" decoding="async" loading="lazy" style="background-color:#0c0c0c"></picture>

## Download the right ChromeDriver version & keep it up to date on Windows/Linux/macOS using C# .NET

3/7/2021 - .NET

Chrome frequently updates automatically causing ChromeDriver versions to mismatch. Using C# .NET you can download the correct version of the ChromeDriver and keep it up-to-date.



](/blog/dotnet/download-the-right-chromedriver-version-and-keep-it-up-to-date-on-windows-linux-macos-using-csharp-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/eryi1kgw/twilio-authentication-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/eryi1kgw/twilio-authentication-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/eryi1kgw/twilio-authentication-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/eryi1kgw/twilio-authentication-square.png 500w" sizes="250px" width="250" height="250" alt="An illustration of a lock and a key. The key handle is in the shape of the Twilio logo." decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Better Authentication with Twilio API Keys

3/1/2021 - .NET

API Keys are now the preferred way to authenticate with Twilio's API. You can create as many API Keys as you need and remove them if they are compromised or no longer used.



](/blog/dotnet/better-authentication-with-twilio-api-keys)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5002459542608448/media/ggrmwooo/dotnet-yarp-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5002459542608448/media/ggrmwooo/dotnet-yarp-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5002459542608448/media/ggrmwooo/dotnet-yarp-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5002459542608448/media/ggrmwooo/dotnet-yarp-square.png 500w" sizes="250px" width="250" height="250" alt=".NET Bot building an application" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Use project Tye to host Blazor WASM and ASP.NET Web API on a single origin to avoid CORS

2/14/2021 - .NET

Using Microsoft's experimental Project Tye, you configured the proxy to forward requests to '/api' to the Web API, and all other requests to the Blazor WASM client.



](/blog/dotnet/use-project-tye-to-host-blazor-wasm-and-aspdotnet-web-api-on-a-single-origin)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3cxh1whu/dotnet-yarp-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3cxh1whu/dotnet-yarp-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/3cxh1whu/dotnet-yarp-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/3cxh1whu/dotnet-yarp-square.png 500w" sizes="250px" width="250" height="250" alt=".NET Bot building an application" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Use YARP to host client and API server on a single origin to avoid CORS

1/24/2021 - .NET

Using Microsoft's new reverse proxy "YARP", you configured the proxy to forward requests to '/api' to the Web API, and all other requests to the Blazor WASM client.



](/blog/dotnet/use-yarp-to-host-client-and-api-server-on-a-single-origin)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/sabcadlf/blazor-github-firebase-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/sabcadlf/blazor-github-firebase-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/sabcadlf/blazor-github-firebase-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/sabcadlf/blazor-github-firebase-square.png 500w" sizes="250px" width="250" height="250" alt=" Blazor logo next to an arrow pointing to the GitHub logo next to a double arrow pointing from the GitHub logo to the Firebase Hosting logo " decoding="async" loading="lazy" style="background-color:#fff"></picture>

## How to deploy Blazor WebAssembly to Firebase Hosting

12/27/2020 - .NET

With ASP.NET Blazor WebAssembly you can create .NET applications that run completely inside of the browser. The output of a Blazor WASM project are all static files. You can deploy these applications to various static site hosts like Firebase Hosting.



](/blog/dotnet/how-to-deploy-blazor-webassembly-to-firebase-hosting)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4982464937912058x0.4982464937912058/media/ad2llt0w/javascript-in-blazor-ijso-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4982464937912058x0.4982464937912058/media/ad2llt0w/javascript-in-blazor-ijso-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4982464937912058x0.4982464937912058/media/ad2llt0w/javascript-in-blazor-ijso-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4982464937912058x0.4982464937912058/media/ad2llt0w/javascript-in-blazor-ijso-square.png 500w" sizes="250px" width="250" height="250" alt="Blazor next to JavaScript logo" decoding="async" loading="lazy" style="background-color:#fafafa"></picture>

## Interacting with JavaScript Objects using the new IJSObjectReference in Blazor

12/21/2020 - .NET

A new type is introduced in .NET 5 called IJSObjectReference. This type holds a reference to a JavaScript object and can be used to invoke functions available on that JavaScript object.



](/blog/dotnet/interacting-with-javascript-objects-using-the-new-ijsobjectreference-in-blazor)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4982464937912058x0.4984916607169275/media/ifzbm55o/dotnet-framework-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.4982464937912058x0.4984916607169275/media/ifzbm55o/dotnet-framework-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.4982464937912058x0.4984916607169275/media/ifzbm55o/dotnet-framework-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.4982464937912058x0.4984916607169275/media/ifzbm55o/dotnet-framework-square.png 500w" sizes="250px" width="250" height="250" alt=".NET Bot" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Harden Anti-Forgery Tokens with IAntiforgeryAdditionalDataProvider in ASP.NET Core

12/13/2020 - .NET

Using IAntiforgeryAdditionalDataProvider you can harden ASP.NET Core's anti-forgery token feature by adding additional data and validating the additional data.



](/blog/dotnet/harden-anti-forgery-tokens-with-iantiforgeryadditionaldataprovider-in-aspnet-core)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3pthemoc/dotnet-logo.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3pthemoc/dotnet-logo.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/3pthemoc/dotnet-logo.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/3pthemoc/dotnet-logo.png 500w" sizes="250px" width="250" height="250" alt=".NET logo" decoding="async" loading="lazy" style="background-color:#512bd4"></picture>

## Rethrowing your exceptions wrong in .NET could erase your stacktrace

12/4/2020 - .NET

You may be erasing your stacktrace if you are catching and rethrowing exceptions the wrong way. This could make debugging a nightmare because you don't know where the exception was originally thrown.



](/blog/dotnet/rethrowing-your-exceptions-wrong-in-dotnet-could-erase-your-stacktrace)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5174072383681385x0.4690625146777922/media/mpim22mx/ndepend-logo.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5174072383681385x0.4690625146777922/media/mpim22mx/ndepend-logo.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5174072383681385x0.4690625146777922/media/mpim22mx/ndepend-logo.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5174072383681385x0.4690625146777922/media/mpim22mx/ndepend-logo.png 500w" sizes="250px" width="250" height="250" alt="NDepend Logo" decoding="async" loading="lazy" style="background-color:#0077C6"></picture>

## Checking out NDepend: a static code analysis tool for .NET

8/11/2020 - .NET

NDepend is a static code analysis tool (SAST) for .NET. NDepend will analyze your code for code smells, best practices, complexity, dead code, naming conventions, and much more.



](/blog/dotnet/checking-out-ndepend-a-static-code-analysis-tool-for-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/qbfo2sl3/dnnlogo.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/qbfo2sl3/dnnlogo.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/qbfo2sl3/dnnlogo.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/qbfo2sl3/dnnlogo.png 500w" sizes="250px" width="250" height="250" alt="DNN Logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## How to add Hangfire to DNN

8/6/2020 - .NET

DNN already has an excellent built-in scheduler you can use to schedule tasks. But you may be more familiar with and prefer Hangfire for running background jobs. These instruction will walk you through configuring Hangfire in with DNN.



](/blog/dotnet/how-to-add-hangfire-to-dnn)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.0710139009711151x0.22766818987527038/media/i2knqbmn/capture.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.0710139009711151x0.22766818987527038/media/i2knqbmn/capture.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.0710139009711151x0.22766818987527038/media/i2knqbmn/capture.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.0710139009711151x0.22766818987527038/media/i2knqbmn/capture.png 500w" sizes="250px" width="250" height="250" alt="Screenshot of NCrontab Expression Tester tool" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Introducing NCrontab Tester (Blazor WebAssembly)

8/5/2020 - .NET

Introducing NCrontab Expression tester, made using NCrontab .NET library, Blazor WebAssembly, and hosted on Azure Static Web Apps



](/blog/dotnet/introducing-ncrontab-tester-blazor-webassembly)

[Previous Page](/blog/csharp#main-content)[Show All Posts](/blog/csharp/all#main-content)[Next Page](/blog/csharp/page/3#main-content)

[Prev](/blog/csharp#main-content)[Next](/blog/csharp/page/3#main-content)
