【问题标题】:Request body too large请求正文太大
【发布时间】:2020-07-20 01:11:29
【问题描述】:

当我尝试将 80mb 文件从邮递员上传到我在 IISExpress 上的 Visual Studio 2019 中运行的本地端点时,我收到以下错误:

请求过滤模块配置为拒绝超过请求内容长度的请求。

所以我将此添加到项目的 applicationhost.config 中:

<system.web>
      <httpRuntime maxRequestLength="1050000" /> 
    </system.web>
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="1073741824"/>
            </requestFiltering>
        </security>

当我发出 API 请求时,这会阻止错误出现,但现在我只是得到一个 ServiceStack 生成的“快照”页面,告诉我请求花费了多长时间和日期,但我的实际端点从未被命中。

在我的日志中,我可以看到 ServiceStack 抛出了这个异常:

2020-07-20 01:57:56.0497||ERROR|ServiceStackHost|请求正文 大的。 Microsoft.AspNetCore.Server.IIS.BadHttpRequestException: 请求正文太大。在 Microsoft.AspNetCore.Server.IIS.BadHttpRequestException.Throw(RequestRejectionReason 原因)在 Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.InitializeRequestIO() 在 Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.ReadAsync(Memory1 memory, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.IIS.Core.HttpRequestStream.ReadAsyncInternal(Memory1 缓冲区,CancellationToken 取消令牌)在 Microsoft.AspNetCore.WebUtilities.BufferedReadStream.EnsureBufferedAsync(Int32 minCount, CancellationToken cancelToken) 在 Microsoft.AspNetCore.WebUtilities.MultipartReaderStream.ReadAsync(字节[] 缓冲区,Int32 偏移量,Int32 计数,CancellationToken 取消令牌)在 Microsoft.AspNetCore.WebUtilities.StreamHelperExtensions.DrainAsync(流 流,ArrayPool1 bytePool, Nullable1 限制,CancellationToken 取消令牌)在 Microsoft.AspNetCore.WebUtilities.MultipartReader.ReadNextSectionAsync(CancellationToken 取消令牌)在 Microsoft.AspNetCore.Http.Features.FormFeature.InnerReadFormAsync(CancellationToken 取消令牌)在 Microsoft.AspNetCore.Http.Features.FormFeature.ReadForm() 在 Microsoft.AspNetCore.Http.DefaultHttpRequest.get_Form() 在 ServiceStack.Host.NetCore.NetCoreRequest.get_FormData() 在 C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Host\NetCore\NetCoreRequest.cs:line 167 在 ServiceStack.HttpRequestExtensions.GetFlatnedRequestParams(IRequest 请求)在 C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\HttpRequestExtensions.cs:line 555 在 ServiceStack.Host.RestHandler.CreateRequestAsync(IRequest httpReq, IRestPath restPath) 在 C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Host\RestHandler.cs:line 132 在 ServiceStack.Host.RestHandler.ProcessRequestAsync(IRequest req, IResponse httpRes, String operationName) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Host\RestHandler.cs:line 89|网址:|动作:

所以 Body 长度仍然需要在某个地方设置,但我看的任何地方都指向我已经使用的配置。

是否需要额外设置或者这是 ServiceStack 问题?

【问题讨论】:

    标签: servicestack iis-express


    【解决方案1】:

    我在启动时错过了这个选项:

    
    services.Configure<IISServerOptions>(options =>
    {
        options.MaxRequestBodySize = int.MaxValue;
    });
    
    services.Configure<KestrelServerOptions>(options =>
    {
        options.Limits.MaxRequestBodySize = int.MaxValue; // if don't set default value is: 30 MB
    });
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多