ファイル (マルチパート フォーム データ) をアップロードするために、ASP.NET でホストされた WebAPI エンドポイントに取り組んでいます。予想されるファイルは小さいので、デフォルトの最大要求サイズ (4MB) のままにします。リクエスト サイズに違反すると、デフォルトで、フレームワークは HTML 中心のレスポンスを返します。より API クライアントに適したものを返したいと思います。
IIS と ASP.NET パイプラインの動作方法により、要求サイズ違反は、MessageHandlers などの WebAPI パイプラインでは処理されないようです。したがって、Global.asax.cs でエラーをキャッチし、API クライアント フレンドリな応答を作成するコントローラーにリダイレクトすることにしました。
protected void Application_Error()
{
if (exception.Message.ToUpper().Contains("MAXIMUM REQUEST LENGTH"))
{
Server.ClearError();
Response.Redirect("~/errors/500?message=" + exception.Message);
}
}
public class ErrorsController : ApiController
{
public HttpResponseMessage Get(int id, string message)
{
return Request.CreateResponse((HttpStatusCode)id, message);
}
}
これを行うより良い方法はありますか?302 リダイレクトを発行せずに、このようなことを処理できるようにしたいと考えています。