IIS中如何變更設定uploadReadAheadSize,突破上傳超過48K(49152)的方法

在IIS上傳檔案的限制上,通常都只要修改PHP.INI或是調整maxAllowedContentLength就可以。
但是,部份情況應用程式沒有請求或沒辦法請求Request.BinaryRead(Request.TotalBytes)這樣的命令時,
您會發現無論您的上傳極限設定多大,都上傳只能大約48K…

原因是IIS上傳檔案時,會將前 48K 讀取到緩衝區中,然後將其傳遞給應用程序進行處理。
超過 48K 的任何內容都需要透過例如Request.BinaryRead(Request.TotalBytes)這樣的命令來獲取。
一般情況下應用程式均會使用這類命令來獲取剩餘資料,但是部分特殊情況(例如封閉式網路),
可能會無法正常傳遞這類獲取剩餘檔案資料的指令。

因此,透過修改IIS的uploadReadAheadSize來直接取得檔案上限容量的方式,是個不錯的方法。
修改方式如下:

  1. 打開 IIS 管理器。
  2. 選擇要配置的網站(也可以在全域中設定)。
  3. 選擇管理器右邊功能區最下方的【設定編輯器】。
  4. 將最上方【區段】的部分選擇【system.webServer】的【serverRuntime】。
  5. 這時就會看到uploadReadAheadSize,在這邊就可以修改這個站台的uploadReadAheadSize數值。
  6. 最下方會提示最大值(有些是2G,有些則是4G),輸入您需要的數值(以bytes輸入)後點擊右上方的【套用】即可生效。

分享出去: