2016-07-28 103 views
5

私は一般的にASP.NETとMVCについてかなり新しいです。私は、ASP.NET MVCアプリケーションをASP.NET MVCコアに移行しています。私は、次の悪名高いエラーのHttpExceptionを処理することができたかつての枠組みの中で:HTTPエラー404.13のカスタムエラーページASP.NETコアMVC

HTTP Error 404.13 - Not Found

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

私は現在、デフォルトでは30メガバイトで最大アップロード許容長を増やすことができます承知していますが、私の目標は提示することです何が起きたのかを説明するフレンドリなエラーページで、許可された制限を上げないでください。私は研究の数時間後にAsp.Netコアで、このための代替手段を見つけることができないよう

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 

    } 
} 

:ASP.NETで

私は私のGlobal.asaxの上、次のコードでこれをやりました。 私は自分のStartup.csにいくつかのミドルウェアを接続する必要があると信じています.HttpExceptionを処理してリダイレクトするカスタムエラーページを実現するメソッドを設定しますが、本当にこの問題については迷っています。

私は正常な404などのHTTPエラーのカスタムエラーページのために、次のミドルウェアを使用するために管理している - が見つかりまたは403なし - 私のconfigureメソッドで次のように使用してForbiden:コントローラと並ん

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

を:

public class ErrorController : Controller 
{ 
    public IActionResult StatusCode404() 
    { 
     return View(viewName: "CustomNotFound"); 
    } 

    public IActionResult StatusCode403() 
    { 
     return View("CustomForbiden"); 
    } 
} 

そして対応するビュー。しかし、404.13のエラー(アップロードが大きすぎる)は、現在のミドルウェアでは処理されません。私はIISがWebアプリケーションによって処理されないので、エラーを提示していると思う。

答えて

0

あなたは正しいですか? IISはパイプラインに入る前にエラーを摘発します。 httpErrorsモジュールをweb.configに追加し、サイトのページで指しておくことをおすすめします。

<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

MVCコアの推奨事項。私はミドルウェアを削除し、 'httpErrors'モジュールを追加しました。各エラーのpathプロパティは' path = "/ Error/CustomAction"のような値を許可しています ""エラーコントローラでカスタムエラーページ/ビューを処理できます。 –

+0

これは、ビジュアルスタジオとライブ/リモートで接続できることは素晴らしいことです。それ以外の場合は、ヒットまたはミスであり、公開/テストを繰り返していなければならず、ベストを願うことが本当の苦境です。 – razblack

+0

私は不思議ですが、もしあなたがうろこシステムと言ってクライアントにメッセージを処理したいと思ったら、あなたはこのリダイレクトを起こしています。 – razblack

関連する問題