我有一個使用 .net 4.5.2 的較舊的 ASP.NET API Web 服務,并且我將一個包含 base64 影像的物件發布到我的控制器,沒有任何問題。當我嘗試使用更多和更大的影像發布資料并且我收到 413 請求物體太大錯誤時,問題就出現了。我一直在查找東西并嘗試了我在網上找到的所有東西,但沒有運氣。我正在尋找上傳大小約為 10MB 的檔案。讓我相信它與服務器相關的一件事是在 IIS Express 下運行該服務時,我可以在本地上傳大檔案。
我嘗試將 MaxRequestLength 和 MaxAllowableContentLength 添加到網路配置中。
<system.web>
<!-- tell IIS to let large requests through -->
<httpRuntime maxRequestLength="52428800" />
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
我還在 IIS v6.2 中對我的 Windows 2012 R2 服務器進行了更改,以允許更大的檔案。我還調整了服務器上的 UploadReadAhead 值。



我在 API 配置類中沒有什么特別之處。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
}
我的配置中用于此服務的系結
<webHttpBinding>
<binding name="SecureServerBindingWithUserNameRest" maxReceivedMessageSize="52428800">
<readerQuotas maxArrayLength="10485760" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" proxyCredentialType="None" />
</security>
</binding>
<binding name="webHttpTransportSecurityRest">
<security mode="Transport" />
</binding>
</webHttpBinding>
uj5u.com熱心網友回復:
你可以試試這個解決方案,嘗試增加上傳大小限制。IIS 在 applicationHost.config 和 web.config 檔案中使用 uploadReadAheadSize 引數。
- 打開 IIS 管理器
- 選擇站點
- 雙擊“配置編輯器”
- 選擇
system.webServer然后serverRuntime uploadReadAheadSize將值修改為2147483647- 點擊“申請”
uj5u.com熱心網友回復:
當我在 sendig 壓縮包含大量 PDFS 的檔案時遇到此錯誤時,我發現的解決方案是除了 maxRequestLength 之外還添加到 web 配置 requestLengthDiskThreshold:
<system.web>
<httpRuntime maxRequestLength="268435456" requestLengthDiskThreshold="268435456" executionTimeout="600"/>
我還添加了比 90 預設更長的超時,因此它有時間發送檔案。請記住,requestLengthDiskThreshold 不得超過 maxRequestLength。
uj5u.com熱心網友回復:
您也可以考慮在發布大型內容之前執行一個虛擬的 get 請求。當一個 https 連接被初始化時,這個第一個請求不應該很大。初始化 https 連接后,繼續請求不受限制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/507593.html
上一篇:使用SoapCore庫在Web應用程式中隱藏svc端
下一篇:將birt從4.4版遷移到4.9版。ava.lang.NoSuchMethodError:org.mozilla.javascript.Parser.parse(Ljava/lang/String;L
