IIS托管WCF休息服务得到400错误,是否URL过长?

时间:2012-12-26 21:09:24

标签: wcf http rest iis http-status-code-400

我有一个从浏览器(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服务之前,我感觉还有别的因素导致问题。

2 个答案:

答案 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