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

开发HTML-Javascript-C#-DotNetNuke应用时大量元素传参触发404错误

排查传入大量元素时出现404错误的原因

遇到这种“少量数据正常,大量数据就404”的情况,大概率是请求参数的传输方式或服务器/框架的限制导致的,下面是几个最可能的原因和解决思路:

  • URL长度触发限制:如果你的fnInput是通过GET请求把参数拼在URL里传给C#的myFunc,那问题基本出在这。Chrome虽然支持较长的URL,但IIS(DotNetNuke依赖的服务器)默认的最大URL长度是4096字符,查询字符串最大长度也是2048字符。350个类似"1234"的元素用逗号分隔后,字符串长度肯定远超这个阈值,服务器会直接拒绝这个请求并返回404。

  • DotNetNuke的请求过滤拦截:DNN自带安全过滤机制,会对过长的请求URL或异常请求进行拦截,防止恶意攻击。你可以登录DNN后台,进入Settings > Security > Request Filtering,检查是否有针对URL长度、查询字符串长度的限制配置,要是数值太小,就调整到能容纳你350个元素的长度。

  • IIS的请求参数限制:除了DNN的配置,IIS本身也有全局的请求限制。打开IIS管理器,找到你的站点,进入Request Filtering功能,切换到URL和Query String标签页,查看当前的最大长度设置。如果默认值不够,就修改成合适的数值(比如先估算350个元素的总长度,再留一些冗余)。

  • 请求方式选得不对:GET请求天生不适合传递大量数据,换成POST请求就从根源上解决了URL长度的问题。你需要修改前端的fnInput函数,把GET请求改成POST,把参数放在请求体里;同时调整C#端的myFunc对应的接口,让它接收POST过来的参数(比如用[HttpPost]特性标记,配合模型绑定或者直接读取请求体)。

快速排查步骤

  1. 打开Chrome开发者工具(按F12),切换到Network标签,触发那个传350个元素的请求;
  2. 查看请求的类型(GET/POST)和URL长度,确认是不是GET导致的超长URL;
  3. 如果是GET,直接改成POST;如果是POST,再检查DNN和IIS的请求体大小限制。

内容的提问来源于stack exchange,提问作者Pippo J. David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:41:33