日期:2014-05-17  浏览次数:20477 次

本地没事,服务器上向ASHX文件传值的字数过多报错:“此请求的查询字符串的长度超过配置的 maxQueryStringLeng”
一个发布动态的功能,异步调用的ASHX文件,本地怎么都没事,到了服务器上传过去的值字数太多就会抱这个错
:“此请求的查询字符串的长度超过配置的 maxQueryStringLeng“
CONFIG里找了找,貌似又没有这个东西,敢问各位大侠 应该怎么解决

------解决方案--------------------
1. 修改web.config文件可以改变这个默认值

<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
</system.web>
<configuration>

2.另一种方法是修改.NET FrameWork:

(1) 修改 C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/CONFIG 目录下的machine.config 文件。

(2) 查找 "<httpruntime" 在这一行将 maxRequestLength的值改为理想的值,比如想要8M,就输入8192.
这样,你的任何一个 web 工程都可以上传最大8M的文件。 
3.顺便说下IIS中限制上传文件大小的修改方法:

(1)首先要到进程中把IIS服务关了,即把inetinfo.exe进程关了。

(2)在系统目录中找到:windows/system32/inesrv/metabase.xml”文件,找个文本编辑器打开,查找AspMaxRequestEntityAllowed="204800"这一项,这就是iis上传文件的默认大小了,默认为204800Byte,也就是200KB,将它改为需要的大小就可以了。
------解决方案--------------------
你用的是GET方式,query string最长长度是有限制的,iis是2048字节

修改方法:
asp.net 4.0里:
<httpRuntime maxQueryStringLength="260" maxRequestLength="2048"/>

早期版本,需要改iis的config:
<requestLimits maxQueryString="20480"></requestLimits>

或者改用post方式