使用大型查询字符串值的Ajax调用失败

时间:2009-11-13 19:42:43

标签: asp.net wcf iis-7

我使用asp.net scriptmanager进行Ajax调用。在场景后面获取数据并将其作为查询字符串添加到url中并进行调用。但是,当数据非常大时,它会失败。

我认为如果我可以增加查询字符串maxwidth,它将会解决。如何在asp.net中更改maxquerystring大小。

此外,错误不是由于浏览器的限制,因为服务器会抛出它。

服务是为ajax公开的WCF服务。

错误是

    Exception Type: System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]
Exception: Buffer cannot be null.
Parameter name: buffer
Source: DefaultPage
Stack Trace: 

Server stack trace: 
   at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

所以在这里它形成了像http://site/ajax.svc?data=xxxxxxxxxxxxxxxxxxxx

这样的网址

大意味着它长达1000个字符。

我可以在哪里设置允许的最大网址大小。

我理解这种数据需要使用post而不是get来提交,但这就是scriptmanager的工作原理,所以希望通过扩展这个限制来获得解决方案。

2 个答案:

答案 0 :(得分:2)

查询字符串的最大长度不能以编程方式设置,它由请求中涉及的Web服务器和浏览器确定。

检查维基百科条目的兼容性问题部分,了解详细信息和其他资源的链接。

http://en.wikipedia.org/wiki/Query_string

答案 1 :(得分:2)

您可以考虑使用$ .POST