iis ASP.NET Web服务413请求实体太大错误

gfttwv5a  于 2022-11-12  发布在  .NET
关注(0)|答案(3)|浏览(305)

我有一个使用.net 4.5.2的旧的ASP.NET API Web服务,我正在向我的控制器发布一个包含base64图像的对象,没有任何问题。现在问题来了,当我试图发布更多和更大的图像数据时,我得到了413请求实体太大的错误。我一直在查找东西,并尝试了所有我能在网上找到的东西,但没有运气。我正在寻找上传文件约10MB的大小。一件事,使我相信它的服务器相关的是,当运行服务下的iisexpress我可以上传大文件本地。
我已尝试将MaxRequestLength和MaxAllowableContentLength添加到Web配置中。

<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>
a11xaf1n

a11xaf1n1#

您可以尝试此解决方案,尝试增加上载大小限制。IIS使用applicationHost.config和web.config文件中的uploadReadAheadSize参数。
1.打开IIS管理器
1.选择站点
1.双击“配置编辑器”
1.选择system.webServer,然后选择serverRuntime
1.将uploadReadAheadSize值修改为2147483647
1.单击“应用”

ss2ws0br

ss2ws0br2#

当我在发送包含大量PDFS的压缩文件时遇到此错误时,我找到的解决方案是除了maxRequestLength之外,还将requestLengthDiskThreshold添加到Web配置中:

<system.web>
    <httpRuntime maxRequestLength="268435456" requestLengthDiskThreshold="268435456" executionTimeout="600"/>

我还添加了一个比90预设更长的超时,这样它就有时间发送文件了。只是要记住,requestlengthDiskthreshold一定不能超过maxRequestLength。

pw9qyyiw

pw9qyyiw3#

您也可以考虑在发布大量内容之前执行一个伪get请求。当初始化https连接时,第一个请求不应该很大。一旦初始化https连接,后续请求就不会受到限制。

相关问题