ファイルアップロードでのアップロードファイル設定

こんにちは。beaglesoftの真鍋です。

最近はASP.NET MVCとAzureな毎日です。今回はファイルのアップロードに関する設定についてです。

ASP.NET MVCでファイルアップロードでエラー

ASP.NET MVCでファイルアップロードを行うと初期設定の場合には次のようなエラーが表示されることがあります。

screencapture-localhost-59321-photo-upload-1463016344391.png (337.0 kB)

これは、アップロードしたファイルサイズが設定値を超えたために発生するエラーです。

maxRequestLength 省略可能な Int32 型の属性です。 入力ストリームのバッファリングしきい値の限界値を KB 単位で指定します。この限界値は、たとえば大きいファイルをサーバーにポストするユーザーなどにより引き起こされる、サービス拒否攻撃を防止するために使用できます。 既定値は、4096 (4 MB) です。

設定を変更する

設定はWeb.confighttpRuntimeに設定されているmaxRequestLengthを変更します。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    ...
  </configSections>
  <!--
    web.config の変更点の説明については、http://go.microsoft.com/fwlink/?LinkId=235367 を参照してください。

    次の属性を <httpRuntime> タグに設定できます。
      <system.Web>
        <httpRuntime targetFramework="4.6.1" />
      </system.Web>
  -->
  <system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.6.1" />
    <!-- ここのhttpRuntimeにmaxRequestLengthを追加してまたは変更して設定する -->
    <httpRuntime targetFramework="4.5.2" maxRequestLength="10240" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  </system.web>

...
</configuration>

注意点

httpRuntimesystem.web内に1つしか設定できないためすでに設定がある場合にはその設定に追記するようになります。

参考

httpRuntime 要素 (ASP.NET 設定スキーマ).aspx)

たいてい新しいプロジェクトで開発をすると引っかかるのでメモとして残しておこうと思います。