StackExchange.Exceptional icon indicating copy to clipboard operation
StackExchange.Exceptional copied to clipboard

error route handler not rendering ui properly with asp.net core 3.x razor pages

Open fingers10 opened this issue 5 years ago • 4 comments

I came across this awesome nuget package to handle and log exceptions in asp.net core. I tried this in my razor pages application and things worked fine. However when I try to use error routes to see the errors, the page is not getting displayed properly.

My Error Page:

public class ErrorModel : PageModel
{
    public async Task OnGetAsync()
    {
        await ExceptionalMiddleware.HandleRequestAsync(HttpContext).ConfigureAwait(false);
    }
}

Here is the error route screen print:

enter image description here

Here is the console log:

enter image description here

Here is my ConfigureServices method:

services.AddExceptional(Configuration.GetSection("Exceptional"), options =>
{
    options.UseExceptionalPageOnThrow = Env.IsDevelopment();
});

Here is my Configure method:

app.UseExceptional();

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();
});

I even tried changing the middleware order by placing the app.UseExceptional() after app.UseStaticFiles(). But still it doesn't work. Please assist on why the assets are not getting loaded.

fingers10 avatar Mar 18 '20 18:03 fingers10

Hmmm, looks like a routing issue where the path is one off. Can please you show me the relative path of the page and the resources it's trying to load?

NickCraver avatar Mar 19 '20 11:03 NickCraver

Here you go,

It works if I use it in controllers as shown below:

public class ExceptionsController : Controller
{
    public async Task Index() 
    {
        await ExceptionalMiddleware.HandleRequestAsync(HttpContext).ConfigureAwait(false);
    } 
}

But not with razor pages as shown below:

public class ErrorModel : PageModel
{
    public async Task OnGetAsync()
    {
        await ExceptionalMiddleware.HandleRequestAsync(HttpContext).ConfigureAwait(false);
    }
}

Project Structure: image

fingers10 avatar Mar 19 '20 11:03 fingers10

I think I encountered a similar issue but I had the error page hosted in a controller.

Not sure if something similar is happening in razor pages routing.

In my case, I was using a routeprefix and route attribute like so: image

CSS and sub-routes wouldn't work. Found the fix for my particlular issue here: https://github.com/NickCraver/StackExchange.Exceptional/issues/154

image

Note: two changes, added ~ to bypass routeprefix (was testing this and it didn't work but decided to keep this) The change that worked was adding {/{path?}/{subPath?}

agrath avatar Aug 17 '20 21:08 agrath

I also just ran into this, documenting the path definition requirements would help people get it running.

IronSean avatar Dec 04 '20 21:12 IronSean