Vista (IIS 7) へのファイルアップロード制限

Vista上でASP.NETをベースとしたウェブアプリケーションを作っていて、そのなかでクライアントからファイルをアップロードする処理がある。転送ファイルは30MBを超えるものがあって、Vista (IIS 7) では31MBくらいのファイルはクライアントから問題なくアップロードできるのに、32MBくらいから失敗する。ちなみに、XPでは同じコード、同じ転送ファイルなのにすんなりとアップロードは成功する。

いろいろと調べた結果、Vista (IIS 7) にはやはりアップロードできるファイルの制限がかけられていた。

と、その前に、ASP.NETではXPでもそうだけど、アップロードできるファイルサイズは4MBに制限されている。その制限を変更するには、Web.configに<configuration>
  <system.web>
    <httpRuntime maxRequestLength="102400" />
  </system.web>
</configuration>
を追加する。デフォルトでは 4096 (4MB) が設定されているはず。上の例では 100MB に変更している。

さて、Vistaではさらに制限があって、それを変更するには、%windir%\System32\inetsrv\config\applicationHost.configを編集する必要がある。が、Vistaではシステムファイルの編集にアクセス権が設定されていて、エディタで開こうとしても拒否されてしまう。そこで、エディタ(メモ帳でもいい)を管理者として実行して(右クリックして「管理者として実行」を選ぶ)、エディタからファイルを開けば編集できる。ここでは以下の設定を変更する。<configuration>
  <configSections>
    <sectionGroup name="system.webServer">
      <sectionGroup name="security">
        <section name="requestFiltering" overrideModeDefault="Deny" />
Deny → Allow にする。そして、Web.configに以下の設定を追加する。<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="100000000"/>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

これでようやく32MBを超えるファイルもアップロードできるようになった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です