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

ASP.NET集成TinyMCE编辑器提交时出现400错误排查求助

问题分析与解决方案

你的问题核心是单个表单字段的长度超出了ASP.NET默认限制,以下是具体原因和对应解决办法:

1. 未配置FormOptions的单个字段长度限制

你仅设置了MultipartBodyLengthLimit(整个多部分表单的总长度),但ASP.NET的FormOptions默认存在ValueLengthLimit参数,用于限制单个表单键值对的最大长度,默认值为4194304字节(约4MB),这正好匹配你测试的400万字符上限。

解决办法:在配置FormOptions时补充ValueLengthLimit设置:

builder.Services.Configure<FormOptions>(options =>
{
    // 设置整个表单的总长度限制为128MB
    options.MultipartBodyLengthLimit = 134217728;
    // 设置单个表单字段的最大长度为128MB
    options.ValueLengthLimit = 134217728;
});

2. 模型绑定的属性限制

如果后端通过模型接收TinyMCE内容,检查模型中对应字段是否添加了[StringLength]或[MaxLength]特性,这些特性会覆盖全局设置,强制限制字段长度。

解决办法:移除或调整特性的上限值,示例如下:

public class YourFormModel
{
    // 移除限制或设置足够大的数值
    [StringLength(134217728)]
    public string TinyMceContent { get; set; }
}

3. IIS请求筛选器限制

若应用部署在IIS上,IIS自带的请求筛选器可能会单独限制请求内容长度,即使ASP.NET层面已配置上限,IIS的限制依然会生效。

解决办法:在web.config中添加或修改<requestFiltering>节点:

<system.webServer>
    <security>
        <requestFiltering>
            <!-- 设置最大请求内容长度为128MB -->
            <requestLimits maxAllowedContentLength="134217728" />
        </requestFiltering>
    </security>
</system.webServer>

4. Kestrel的普通表单内容长度限制

如果表单使用application/x-www-form-urlencoded类型(非多部分表单),Kestrel默认存在MaxFormContentLength限制(默认4MB),需要单独配置。

解决办法:在Kestrel配置中补充该参数:

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.MaxRequestBodySize = 134217728;
    // 设置普通表单的最大内容长度为128MB
    serverOptions.Limits.MaxFormContentLength = 134217728;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:35:03