长网址为iis7的500错误

时间:2010-05-15 16:38:35

标签: asp.net asp.net-mvc flash url iis-7

我正在开发的网站上的一些长URL收到404错误。经过一些挖掘后,我发现当URL的某些方面的长度超过IIS7中的可配置限制时会发生这种情况。在这种情况下,需要在web.config中增加 requestLimits 属性的 maxQueryString 属性

<system.webServer>
<security>
  <requestFiltering>
    <requestLimits maxQueryString="4096" maxAllowedContentLength="4096" maxUrl="8192" >
    </requestLimits>
  </requestFiltering>
</security>

这在我的开发服务器上立即解决了问题,但在远程服务器上我现在得到了:

  

500 - 内部服务器错误。

     

有   您所拥有的资源存在问题   寻找,它不可能   显示。

这就是它给我的所有信息。

4 个答案:

答案 0 :(得分:1)

您确定您的主机/生产服务器正在运行Windows Server 2008(或2008 R2)吗? 您在上面描述的设置仅对IIS 7 +有效。

答案 1 :(得分:1)

更改Flash以将数据作为POST发送,因此不会将其附加到URL。 Here's some sample code。此外,您可能需要更改服务器端以将数据查找为POST而不是GET。

答案 2 :(得分:0)

您不应该使用这么长的网址。除了其他原因之外,至少有一个常见的工具栏(Bing,Yahoo,Google)会打破它们,产生这样的错误。用户会责怪你。

我知道这是因为我的一位用户在遗留应用中遇到了这样的问题。当我删除工具栏时(她安装了所有三个工具栏),问题就消失了。

答案 3 :(得分:0)

GET请求仅受浏览器对URL字符串长度的限制。 在IE中它是2,083个字符,减去实际路径中的字符数。其他浏览器没有明确定义URL字符串长度的限制。这些文章可能对您有所帮助。

http://www.boutell.com/newfaq/misc/urllength.html

http://support.microsoft.com/kb/q208427

RFC 2616“超文本传输​​协议 - HTTP / 1.1”没有指定对URL长度的任何要求,因此浏览器可以自由地规定他们认为合适的内容。

因此,如果它符合您的要求,您应该使用POST而不是GET