如何突破.NET Core 2.2的上傳大小限制

原文地址: https://www.jeremyjone.com/504/,轉載請註明


剛開始寫後端時,只是上傳一些圖片,文檔之類的文件。最近需要上傳視頻,尤其是大型視頻,動輒上G的文件,我開始也是直接上傳,然後前端直接連接錯誤,然而後端輸出沒有任何反應,有點懵,初步判斷是文件超限,於是上網查詢資料,發現文件大小限制在30M左右,自己測試大概在27M多一點,我這裏30M的文件上傳也失敗。。。

修改Startup中ConfigureServices的配置

跑題了,回到正題,習慣性的去stackoverflow尋找答案,看到這樣的答案:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    // 這裏是我看到的解決方案,我還將bodyLengthLimit從 int.MaxValue 變成了 long.MaxValue,已達到超大文件的效果。
    services.Configure<FormOptions>(options =>
    {
        options.ValueLengthLimit = int.MaxValue;
        options.MultipartBodyLengthLimit = long.MaxValue;
        options.MultipartHeadersLengthLimit = int.MaxValue;
    });
}

這個答案的標星數很多,而且評論很完美,統一的已解決。。。我滿懷期待的重新測試,然後發現50M的文件依然不能上傳。

我不清楚是我的配置問題,還是其他問題,有需要的朋友可以自己拿去測試一下,應該是一種解決方案,只不過不適合我。

配置web.config

於是乎,去csdn找答案,很快發現了一個簡單配置方法,在項目中添加web.config文件,一種xml格式配置文件,根據說明,他似乎可以放在項目中的任何地方,不過一般我還是習慣還是放在根目錄下。

創建完畢後,添加如下內容:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 1 GB -->
        <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

這個方案對我是OK的,目前上傳小於1G的文件都是可以的,然後我嘗試將數字改成4294967296,也就是4G,上傳超過2G的文件依然是OK的,這個方案對我很友好。有需要的朋友可以拿去。

題外話

昨天配置了公共服務機,修改了IIS Express的配置,然後當我把上面的web.config文件放到項目中後,服務機可以正常訪問192.168.1.7:44342,其他電腦通通都報503。。。鬱悶一下。

然後,根據修改IIS Express的思路,我把web.config刪了,將裏面的內容放在了項目的.vs文件夾中的配置文件裏,也就是.vs/config/applicationhost.config文件,找到對應的<system.webServer>節點,把上面的內容添加進去。

重啓IIS服務器,管理員啓動vs,運行,完美。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章