I am trying to force an asp.net app to be single threaded ie: can only serve one request at time (need to do this to simulate a legacy application).

All I could think of was use a static variable to lock and Monitor.TryEnter and sleep the thread for 5 seconds to simulate as through there is only one thread processing requests.

Is there a better/elegant way to force an asp.net app to be single threaded only ie: able to strictly process one request only at a time.

This will be run as Docker container with Kestrel serving the requests.

This is what I have so far that seems to work, when calling the /test enpoint it blocks the whole app for 5 seconds

```
public class Program
{
    private static readonly object LockObject = new();

    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // Add services to the container.
        builder.Services.AddAuthorization();

        builder.Services.AddEndpointsApiExplorer();
        builder.Services.AddSwaggerGen();

        builder.Services.AddApplicationInsightsTelemetry();

        var app = builder.Build();

        // Configure the HTTP request pipeline.
        if (app.Environment.IsDevelopment())
        {
            app.UseSwagger();
            app.UseSwaggerUI();
        }

        app.UseAuthorization();

        app.MapGet("/test", (HttpContext httpContext) =>
        {
            if (Monitor.TryEnter(LockObject, new TimeSpan(0, 0, 6)))
            {
                try
                {
                    Thread.Sleep(5000);
                }
                finally
                {
                    Monitor.Exit(LockObject);
                }
            }

            return ("Hello From Container: " + System.Environment.MachineName);
        });

        app.Run();
    }
}

```