Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing HttpContext in app.UseStatusCodePages

In my startup.cs in the method public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) I want to access the HttpContext.

The reason I want to do this is that I want to redirect a 401 response to a login page.

app.UseStatusCodePages(async context => {
    var request = context.HttpContext.Request;
    var response = context.HttpContext.Response;

    if (response.StatusCode == (int)HttpStatusCode.Unauthorized)   
       // you may also check requests path to do this only for specific methods       
       // && request.Path.Value.StartsWith("/specificPath")

       {
           response.Redirect("/account/login");
       }
    });

context in the above example does not have an HttpContext property. How do I get access to the HttpContext?

like image 297
Liam Avatar asked Oct 26 '25 21:10

Liam


1 Answers

You are trying to use UseStatusCodePages(this IApplicationBuilder app, Action configuration) extension method overload.

What you should be using is UseStatusCodePages(this IApplicationBuilder app, Func<StatusCodeContext, Task> handler).

Something like this:

app.UseStatusCodePages(context => {
    var request = context.HttpContext.Request;
    var response = context.HttpContext.Response;

    if (response.StatusCode == (int)HttpStatusCode.Unauthorized)
    {
        response.Redirect("/account/login");
    }

    return Task.CompletedTask;
});
like image 71
Zeljko Vujaklija Avatar answered Oct 29 '25 13:10

Zeljko Vujaklija



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!