Skip to content

Instantly share code, notes, and snippets.

@manoj-choudhari-git
Created October 4, 2020 11:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manoj-choudhari-git/a79d28c429e68705bbe0bf24071ef850 to your computer and use it in GitHub Desktop.
Save manoj-choudhari-git/a79d28c429e68705bbe0bf24071ef850 to your computer and use it in GitHub Desktop.
Simple middleware to test performance of the ASP .NET Core web application
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.Use(async (context, next) =>
{
// Do work that doesn't write to the Response.
// e.g. change something in context
// or log something to database
using StreamWriter sw = File.AppendText("some-log-file.txt");
Stopwatch timer = new Stopwatch();
var startTime = DateTime.Now;
var requestId = Guid.NewGuid();
sw.WriteLine("{0}: Request processing started at: {1}", requestId, startTime.ToString("MMM/dd/yyyy hh:mm:ss.ffffff tt"));
timer.Start();
// Invoke next middleware
await next.Invoke();
// Do logging or other work that doesn't write to the Response.
timer.Stop();
var endTime = DateTime.Now;
sw.WriteLine("{0}: Request processing ended at: {1}", requestId, endTime.ToString("MMM/dd/yyyy hh:mm:ss.ffffff tt"));
sw.WriteLine("{0}: Ticks taken by request processing ended at: {1}", requestId, timer.Elapsed.Ticks);
});
app.Run(async context =>
{
await context.Response.WriteAsync("My First .NET 5 Web App");
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment