ASP.NETのアプリで、アプリケーションがクラッシュした。出力しているログをみても、下記のような程度しかエラーが出ていない。コーディングしたところとは無関係なエラーが出力されてきた。
2023-02-XX 10:mm:ss,sss ERROR : - Global_asax.Application_Error[xx] : 場所 System.Web.HttpRequest.GetEntireRawContent()
場所 System.Web.HttpRequest.GetMultipartContent()
場所 System.Web.HttpRequest.FillInFormCollection()
場所 System.Web.HttpRequest.EnsureForm()
場所 System.Web.HttpRequest.get_Form()
場所 System.Web.HttpRequest.get_HasForm()
場所 System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
場所 System.Web.UI.Page.DeterminePostBackMode()
場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
調べたところ、ファイルのアップロードで発生しており、「Web.HttpRequest.GetEntireRawContent()」のところで、POSTされてきた要求のサイズが大きすぎて、クラッシュしていることがわかった。
調べてみると、IISの設定では、デフォルトでPOSTサイズは30MBまで。ASP.NETでは、デフォルトで4MBまで、だった。アップロードのファイルサイズが数メガあり、POSTサイズを超えたのが原因だった。
対応としては、アップロードするファイルサイズを制限するか、ASP.NETの設定(web.config)を変えて、もっと大きいファイルサイズをアップロードできるようにするか、だ。