首页 > 解决方案 > Blazor 服务器端上传文件 > 28.6MB 功能

问题描述

嗨,我想问一下如何配置 blazor 服务器端应用程序以允许上传大于 28.6MB 的文件(这篇文章的大小:https ://www.strathweb.com/2012/09/dealing-with-large-files-in -asp-net-web-api/)。

我正在使用 BlazorInputFile 和 Tewr.Blazor.FileReader。一切正常,而文件大小小于约 23 MB。更大的文件会挂起应用程序。当发生读入内存流时,两种解决方案都会停止。

 MemoryStream ms;
                using (ms = new MemoryStream())
                {
                    await file.Data.CopyToAsync(ms); <- STOPS HERE
                    ms.Dispose();
                }

或者

using (MemoryStream memoryStream = await file.CreateMemoryStreamAsync(100 * 1024 * 1024)) <-STOPS HERE
                {
                    // Sync calls are ok once file is in memory
                }

我尝试了多种设置,例如:

services.AddSignalR(e =>
{
    e.MaximumReceiveMessageSize = 100 * 1024 * 1024;
});

app.Use(async (context, next) =>
{
    context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = null;
    await next.Invoke();
});

services.AddServerSideBlazor().AddHubOptions(o => o.MaximumReceiveMessageSize = 100 * 1024 * 1024);

但它们都不起作用。有任何想法吗?

标签: c#.netblazorblazor-server-side

解决方案


不确定情况是否仍然如此,但以前我不得不添加一个 web.config 文件,即使它们实际上并未在 .net 核心中使用并且必须添加以下条目:

    <security>
      <requestFiltering>
        <!-- This will handle requests up to 50MB -->
        <!--<requestLimits maxAllowedContentLength="52428800" />-->
        <requestLimits maxAllowedContentLength="104857600" />
      </requestFiltering>
    </security>

推荐阅读