ASP.Net 5 MVC 6, hvordan du bruker delt Error.cshtml som standard feilreaksjon

stemmer
9

ASP.Net 5 MVC 6, hvordan du bruker delt Error.cshtml som standard feilreaksjon

ved bruk av Microsoft.AspNet.Diagnostics UseExceptionHandler mellomvare med en barberhøvel visning

Hvis du ser på eksempelkoden på https://github.com/aspnet/Diagnostics/tree/dev/samples/ExceptionHandlerSample/Startup.cs explaning hvordan du bruker Microsoft.AspNet.Diagnostics Errorhandler mellomvare for ASP.Net 5, en kommentar si:

// Normalt ville bruke MVC eller lignende for å gjengi en hyggelig side.

Ok, men hvordan du gjør det?

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        // Configure the error handler to show an error page.
        app.UseExceptionHandler(errorApp =>
        {
            // Normally you'd use MVC or similar to render a nice page.
            errorApp.Run(async context =>
            {
Publisert på 23/12/2014 klokken 18:55
kilden bruker
På andre språk...                            


2 svar

stemmer
22

i Startup klasse:

app.UseExceptionHandler("/Home/Error");

i HomeController:

public IActionResult Error()
{
    var feature = this.HttpContext.Features.Get<IExceptionHandlerFeature>();
    return View("~/Views/Shared/Error.cshtml", feature?.Error);
}

den Error.cshtml visningen kan se slik ut:

@model Exception

@{
    ViewBag.Title = "Oops!";
}
<h1 class="text-danger">Oops! an error occurs</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (Model != null)
{
    @Html.ValueFor(model => model.Message)
}

denne koden er en del av prosjektet tilgjengelig på GitHub

Svarte 23/12/2014 kl. 19:01
kilden bruker

stemmer
7

Håndtere 404s og interne feil du må endre feilsignatur.

Jeg har eksplisitt kommen ut debugging feil handlere i min Dev miljø i Startup.cs. Hvis du ikke ønsker å gjøre dette bruk miljøvariabelen i prosjektet.

Legg dette til Startup.cs

    if (env.IsDevelopment())
    {
        // Uncomment when done testing error handling
        //app.UseBrowserLink();
        //app.UseDeveloperExceptionPage();
        //app.UseDatabaseErrorPage();

        // Comment when done testing error handling
        app.UseExceptionHandler("/Home/Error");
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");

        //For more details on creating database during deployment see http://go.microsoft.com/fwlink/?LinkID=615859
        try
        {
            using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
                .CreateScope())
            {
                serviceScope.ServiceProvider.GetService<ApplicationDbContext>()
                    .Database.Migrate();
            }
        }
        catch { }
    }


    // Lines Skipped For Brevity ....


    // Add this line above app.Mvc in Startup.cs to Handle 404s etc
    app.UseStatusCodePagesWithReExecute("/Home/Error/{0}");

Legg dette til HomeController.cs

    using Microsoft.AspNet.Mvc;
    using Microsoft.AspNet.Diagnostics;
    using Microsoft.AspNet.Http.Features;

    // id = Http Status Error
    public IActionResult Error(String id)
    {
        var feature = HttpContext.Features.Get<IExceptionHandlerFeature>();

        var undhandledException = feature?.Error;
        var iisError = id;

        return View();
    }
Svarte 02/02/2016 kl. 16:01
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more