mvc中查询字符串请求过长

最近在mvc中做导出Excel功能,通过页面把字段id和对应的中文名称通过a标签传给控制器的过程中,总是报错。

1.第一次错误截图

具体解决方案:

可以配置 IIS 服务器以拒绝查询字符串长度大于指定值的请求。如果请求的查询字符串大于所配置的值,便会返回此错误。如果需要增加查询字符串的允许长度,请修改configuration/system.webServer/security/requestFiltering/[email protected] 设置。

即确认 applicationhost.config 或 web.config 文件中的configuration/system.webServer/security/requestFiltering/[email protected] 设置。

解决方法一:

在项目的web.config里,<system.webServer>路径下添加如下配置:

<security>
      <requestFiltering>
      <requestLimits maxQueryString="4080" />
      </requestFiltering>
</security> 

其实就是更改:maxQueryString的值,默认的大小是2048

解决方法二:

对于所有的项目都要应用此配置的话,在C:\Windows\System32\inetsrv\config里找到applicationHost.config文件,在,<system.webServer>路径下添加如下配置:添加如下配置:

    <security>
          <requestFiltering>
          <requestLimits maxQueryString="4080" />
          </requestFiltering>
    </security>  

对于已经设置了的,可以修改maxQueryString的大小.

但是通过以上的更改问题还是没解决,报错:

解决方法:

这是因为网站URL中的参数长度超过HTTP请求中查询字符串的最大可能长度,通过设置配置文件的HttpRuntimeSection.MaxQueryStringLength 属性即可解决这个问题。

打开项目中的Web.config,在<system.web>节点下设置httpRuntime节点的maxQueryStringLength属性,Web.config中的设置如下:

<system.web>
    <httpRuntime maxQueryStringLength="9999"/>
</system.web>

查询字符串的最大长度默认值为2048,我们可以根据需求进行设置,不过如果参数实在太长的话最好使用POST请求,太长的QueryString对于URL来说也不美观。

通过以上的更改,问题得到了解决。

参考:

https://www.afuhao.com/article_articleId-99.shtml

http://shiyousan.com/post/635717961342698849

原文地址:https://www.cnblogs.com/huangshuqiang/p/8258426.html

时间: 2024-10-10 07:05:28

mvc中查询字符串请求过长的相关文章

如何用js获取浏览器URL中查询字符串的参数

首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主机名和当前的URL的端口号.本博客首页返回www.cnblogs.com hostname:设置或返回当前URL的主机名.本博客首页返回www.cnblogs.com hash:设置或返回从井号(#)开始的URL(锚).本博客首页返回 空 pathname:设置或返回当前URL的路径部分.本博客首页

HTTP-URL中查询字符串格式化

HTTP-URL中查询字符串格式化 GET请求是最常见的请求类型,常用语向服务器查询某些信息.必要时,需要将查询字符串追加到URL末尾.有的时候为了根据URL中查询字符串的不同渲染不同的页面也需要读取URL中的查询字符串.如何避免在URL写入查询字符串时报出格式错误 及 如何更快捷读出URL中查询字符串就是这篇博客要解决的问题. https://www.baidu.com/baidu?wd=%C6%E2%C7%E0%F1%C6+csdn&tn=monline_dg 在这个URL中 ? 后的字符串

C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?

C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?这是一个很常见的命题,以前也没有注意,今天QQ群里有人提起,于是就做了下试验,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 5

MySQL 整型字段中查询字符串,返回了所有为0的结果

在MySQL中,在整型字段中查询字符串,返回了所有为0的结果,应该返回null或空. 例如表结构信息: CREATE TABLE `t` (   `name` char(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,   `id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci 表中数据: mysql> select id from t

asp.net mvc中如何处理字符串与对象之间的序列化与反序列化(一)

前台我们一般用ajax来发送数据到后端进行处理,如果json数据结构和后台的实体类结构一致,就直接可以反序列化为指定的对象进行操作,非常方便. 前端发送的json数据结构: 后端实体结构: [csharp] view plain copy public partial class Cures { public string CureID { get; set; } public string MainCureSubjectID { get; set; } public string MainCu

asp.net mvc中查询出来的数据 给属性id赋值

1.<h4 id="fname" class="foodName"> </h4>   1.$("#fname").text(obj.Dish.FoodName); 2.<div class="foodPic"><img src="" id="fpic"></div> 2.if (obj.Dish.Photo == null) {

aspnet mvc 中 跨域请求的处理方法

ASP.NET 处理跨域的两种方式    方式1,后端程序处理.原理:给响应头加上允许的域即可,*表示允许所有的域                 定义一个cors的过滤器 加在在action或者controller上面即可 具体代码: [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.All, Inherited = true, AllowMultiple = true)] p

如何获取浏览器URL中查询字符串中的参数?

例:http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23 $(function(){    var obj={};    function getParams(){     var href=window.location.href;//获取网址http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=x

在ASP.NET MVC中使用Castle Windsor

平常用Inject比较多,今天接触到了Castle Windsor.本篇就来体验其在ASP.NET MVC中的应用过程. Visual Studio 2012创建一个ASP.NET MVC 4网站. 通过NuGet安装Castle Windsor. 在当前项目下创建一个名称为"IOC"的文件夹. 在ASP.NET MVC中,每次请求,DefaultControllerFactory都会为我们创建controller实例,我们需要自定义一个派生自DefaultControllerFact