1

我有一个从浏览器 (IE,Chrome) 返回的 WCF rest\webHttpBinding 服务:

Bad Request - Invalid URL - 
HTTP Error 400. The request URL is invalid.

该服务使用 GET(我们可能应该更改为 POST,但最初我们被告知最大 url 将是 50 个字符),我很好奇问题是什么......只是为了我自己的想法。

我们之前遇到过这个问题,网址超过 300 个字符,因此在 Web 配置中我们设置了 maxUrlLength,如下所示。

  <system.web>
    <compilation targetFramework="4.0" />
    <httpRuntime maxUrlLength ="5000" maxQueryStringLength="2048" />
  </system.web>

这在进行此更新时有效,但现在似乎不起作用,超过 300 的任何内容都会出现 400 错误。

我认为现在有其他东西阻止了请求。我说这个 b/c 之前我们在自己的日志文件和 wcf“诊断”日志文件中有信息。现在这些都没有写入......它就像服务甚至没有参与一样。以前,如果我在服务器本身上点击服务,我会收到此错误

The length of the URL for this request exceeds 
 the configured maxUrlLength value.

但我不再得到那个错误。

我们不“拥有”服务器,即其他一些是管理员,并且之前在没有通知我们的情况下发生了变化。

我环顾四周,但大多数提到设置诊断。我从http://social.msdn.microsoft.com获得了IIS 的 Http.sys 注册表设置,但似乎没有任何相关性。还添加一个部分,但我认为应该足够好(根据 SO 答案)

任何想法可能会发生什么?

谢谢!

.net 4.0、iis 7、windows server 2008

编辑:添加我可以将 maxUrlLength 更新为较小的值,比如 50,并使用 > 50 的 URL,但它失败但失败,并显示“此请求的 URL 长度超过了配置的 maxUrlLength 值”。信息。因此,在它到达 WCF 服务之前,我感觉有别的东西导致了这个问题。

4

2 回答 2

1

我遇到了同样的问题,并且由于这个答案能够通过添加以下内容来解决它:

<system.web>
  <httpRuntime maxUrlLength="500" />
</system.web>
于 2015-08-27T12:46:12.933 回答
0

您的问题是您没有使用查询字符串,而是使用路径。路径的最大长度为 255。
查询字符串和调用 wcf 的路径之间的区别如下
使用 path = http://testservice/service.svc/callfunction/testdata
使用查询字符串
使用查询字符串- http://testservice/ service.svc/callfunction?param1=testdata

于 2017-10-21T11:55:58.207 回答