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

Blazor Server中InputTextArea无法接收SQL查询输入的问题求助

解决Blazor Server中长SQL脚本绑定为null的问题

针对你遇到的EditForm绑定含敏感关键词的长SQL时FLOW.Query被设为null的问题,核心原因是ASP.NET Core请求验证拦截了潜在危险内容,加上默认模型绑定和SignalR消息大小限制导致的,以下是针对性解决方案:

1. 单个字段禁用请求验证并调整长度限制

在你的FLOW模型的Query属性上添加两个特性:

public class FLOW
{
    [Required]
    // 绕过请求验证,允许包含SQL关键词的内容
    [AllowHtml]
    // 设置最大长度为int最大值,适配长脚本
    [MaxLength(int.MaxValue)]
    public string? Query { get; set; }
}
  • [AllowHtml]:告诉ASP.NET Core不要将该字段的内容标记为潜在危险,避免被置为null。
  • [MaxLength(int.MaxValue)]:覆盖默认的字符串长度限制,确保17000+字符的SQL脚本能被正确绑定。

2. 调整SignalR消息大小限制

Blazor Server通过SignalR传输表单数据,默认消息大小限制(约32KB)可能无法容纳长SQL脚本,需要在Program.cs中配置:

builder.Services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        // 根据实际需求设置,比如10MB
        options.MaximumReceiveMessageSize = 10 * 1024 * 1024;
    });

3. 可选:全局配置(不推荐,优先单个字段)

如果需要全局放宽验证(不建议,会降低安全性),可以在Program.cs中添加:

builder.Services.AddRazorPages()
    .AddMvcOptions(options =>
    {
        // 全局禁用请求验证
        options.Filters.Add(new IgnoreRequestValidationAttribute());
        // 调整模型绑定的集合大小限制
        options.MaxModelBindingCollectionSize = int.MaxValue;
    });

注意事项

禁用请求验证后,务必确保后续执行SQL时使用参数化查询,避免真正的SQL注入风险——虽然面向数据工程师,但安全措施不能少。

内容的提问来源于stack exchange,提问作者d.jazel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:36:16