2016-07-28 28 views
5

Genelde ASP.NET ve MVC için yeni yaşıyorum; ASP.NET MVC uygulamasını ASP.NET MVC Core'a taşıyorum. Eski çerçevede aşağıdaki rezil hata için bir HttpException idare edebildi:Http hatası 404.13 için özel hata sayfası ASP.NET Çekirdek MVC

HTTP Error 404.13 - Not Found

The request filtering module is configured to deny a request that exceeds the request content length.

Ben şu anda varsayılan olarak 30MB maksimum yüklemeye izin verildi uzunluğu artırabilir farkındayım, ancak benim objektif sunmaktır Sadece ne olduğunu açıklayan dostça bir hata sayfasına sahip kullanıcı, izin verilen sınırı artırmaz. ASP.NET günü

benim Global.asax aşağıdaki kodla yaptım:

private void Application_Error(object sender, EventArgs e) 
{ 
    var ex = Server.GetLastError(); 
    var httpException = ex as HttpException ?? ex.InnerException as HttpException; 
    if (httpException == null) return; 

    if (httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge) 
    { 
     //handle the error 
     Response.Redirect("~/Error/UploadTooLarge"); //Redirect to my custom error page 

    } 
} 

Ben araştırmalar birkaç saat sonra Asp.Net Çekirdek bunun için bir alternatif bulmak gibi olamaz. Ben HttpException işlemek ve yönlendirmek için özel bir hata sayfası elde etmek için Startup.cs Yapılandırma yöntemimde bazı Middleware eklemek gerekir inanıyorum ama gerçekten bu konuda kaybolur.

böyle 404 olarak başarıyla http hataları için özel hata sayfaları için aşağıdaki ortakatmanını başarmış

- Bulunan veya 403 değil - benim yapılandırmak yöntemine aşağıdaki kullanarak Forbiden: bir denetleyici yanında

app.UseStatusCodePagesWithReExecute("/Error/StatusCode{0}"); 

: Ve ilgili görünümler. Ancak, 404.13 hatası (çok büyük yükleme) geçerli katman yazılımım tarafından ele alınmayacaktır. IIS, web uygulaması tarafından ele alınmadığı için hatayı sunduğuna inanıyorum.

cevap

0

Siz haklısınız. IIS, boru hattınıza girmeden hatayı kontrol ediyor. httpErrors modülünü web.config ürününüze ekleyip sitenin bir sayfasına yönlendirmenizi tavsiye ederim. MVC Core

<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404" subStatusCode="13" /> 
    <error statusCode="404" 
      subStatusCode="13" 
      prefixLanguageFilePath="" 
      path="http://yourwebsite.com/path/to/page" 
      responseMode="Redirect" /> 
    </httpErrors> 
</system.webServer> 
+0

Büyük öneri. Middleware'imi kaldırdım ve 'httpErrors' modülünü ekledim ve her bir hata için path özelliği' path = "/ Error/CustomAction" gibi bir değere izin verdiğinden, 'Özel hata sayfalarını/görünümleri bir Hata Denetleyicisiyle halledebilirim. –

+0

Bu, görsel stüdyo ile canlı/uzaktan bağlanabilmenin harika bir durumdur. Aksi takdirde, bir hit veya özledim ve sürekli bir yayınlamayı/testi tekrarlamak zorunda kalır ve en iyisi için gerçek bir acı noktasıdır. – razblack

+0

Yine de merak ediyorum, mesajınızı müşteriye bir growl sistemi ile işlemek istiyorsanız ne olur ve bu yönlendirme gerçekleşir. – razblack

İlgili konular