You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server环境下Radzen HTML Editor无法保存大文本问题求助

问题原因

该问题由Blazor Server的通信层限制导致:Blazor Server基于SignalR实现客户端与服务端的交互,默认单条消息最大接收大小为32KB,同时ASP.NET Core默认也存在请求体、表单提交的大小限制。当Radzen HTML Editor的内容(含HTML标签序列化后的总大小)超过限制后,消息传输被服务端拦截,导致OnChange事件收到的selectedValue为null,最终触发SignalR连接断开报错。

解决方案

1. 调整Blazor Server SignalR消息上限

在.NET 6+的Program.cs文件中添加如下配置,按需调大SignalR单条消息的最大接收大小,示例设置为10MB:

builder.Services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        options.MaximumReceiveMessageSize = 10 * 1024 * 1024;
    });

如果是.NET 5及更早版本,在Startup.cs的ConfigureServices方法中添加对应配置即可。

2. 调整服务端请求大小限制

如果存在直接提交大文本到接口的场景,同步调整Kestrel的最大请求体大小:

builder.WebHost.ConfigureKestrel(options =>
{
    options.Limits.MaxRequestBodySize = 20 * 1024 * 1024;
});

如果页面/接口单独加了[RequestSizeLimit]特性,同步调大该特性的参数值即可。

3. 优化文本提交逻辑

  • 取消使用Change事件实时提交全量文本,新增独立的保存按钮,点击时直接读取双向绑定的Value变量做业务处理,减少大消息的传输频次
  • 如必须实时保存,可在前端添加防抖逻辑,间隔3-5秒再提交修改,避免频繁触发大消息传输

4. 调整反向代理配置(如有)

部署时如果使用Nginx、IIS等反向代理,需要同步调整代理层的最大请求体限制:

  • Nginx:在站点配置中添加client_max_body_size 20M;
  • IIS:在web.config中添加如下配置:
<system.web>
  <httpRuntime maxRequestLength="20480" />
</system.web>
<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="20971520" />
    </requestFiltering>
  </security>
</system.web>
验证

配置完成后测试不同长度的文本提交,确认大文本场景下selectedValue可正常获取,无连接断开报错即可。

内容的提问来源于stack exchange,提问作者Letoncse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:36:04