我有一个从浏览器(IE,Chrome)返回的WCF rest \ webHttpBinding服务:
Bad Request - Invalid URL -
HTTP Error 400. The request URL is invalid.
该服务使用GET(我们可能应该更改为POST,但最初我们被告知最大网址将是50个字符)并且我很好奇问题是什么......只是为了我自己的想法。 / p>
我们之前有一个超过300个字符的网址,所以在网页配置中我们设置了maxUrlLength,如下所示。
<system.web>
<compilation targetFramework="4.0" />
<httpRuntime maxUrlLength ="5000" maxQueryStringLength="2048" />
</system.web>
这是在这次更新时工作但是现在它似乎不起作用,超过300我们得到400错误。
我认为其他事情现在正在阻止请求。我说这个b / c之前我们在自己的日志文件和wcf'diagnostics'日志文件中都有信息。现在这些都没有被写入......就像服务甚至没有被涉及。以前,如果我在服务器上点击服务,我会收到此错误
The length of the URL for this request exceeds
the configured maxUrlLength value.
但我不再犯这个错误。
我们没有'拥有'服务器,也就是其他人是管理员,事情已经发生变化,而我们没有得到通知。
我环顾四周,但大多数人提到设置诊断。有Http.sys registry settings for IIS,我从http://social.msdn.microsoft.com获得,但似乎没有任何相关性。还添加一个部分,但我认为应该足够好(根据SO答案)
任何想法可能会发生什么?
谢谢!
.net 4.0,iis 7,windows server 2008
编辑:要添加我可以将maxUrlLength更新为小的,比如50,并使用&gt;的URL 50但它失败但失败的是“此请求的URL长度超过配置的maxUrlLength值”。信息。所以,在它到达WCF服务之前,我感觉还有别的因素导致问题。
答案 0 :(得分:1)
我遇到了同样的问题,感谢this answer能够通过添加以下内容来解决此问题:
<system.web>
<httpRuntime maxUrlLength="500" />
</system.web>
答案 1 :(得分:0)
您的问题是您没有使用查询字符串,而是使用路径。路径的最大长度为255。
查询字符串与调用wcf的路径之间的差异如下
使用路径 = http://testservice/service.svc/callfunction/testdata
通过使用查询字符串
使用查询字符串 - http://testservice/service.svc/callfunction?param1=testdata