【问题标题】:Web Service Error 400 - Bad RequestWeb 服务错误 400 - 错误请求
【发布时间】:2017-07-07 17:58:24
【问题描述】:

我有一个令人困惑的问题。我有 Web 服务 A(以下称为 WSA),一个 3.5 .Net WCF,我添加了对 Web 服务 B(以下称为 WSB)的调用,它是一个 3.5 .Net ASMX。在客户端(SOAPUI 或 WCFStorm)中运行 WSA 时,WSB 调用根据客户端超时设置超时。

在 VS 事件查看器中,我可以看到对 WSB 的调用立即引发了两个错误 400:

抛出异常:System.dll 中的“System.Net.WebException”(“远程 服务器返回错误:(400)错误请求。”)。抛出异常: System.dll 中的“System.Net.WebException”(“远程服务器返回 错误:(400)错误请求。”)

没有给出任何理由。让我感到困惑的是错误并没有引起我的注意。当我调试并点击调用 WSB 的代码行时,就像重置一样。我的 WSA 不会再执行任何代码,也不会抛出任何错误。

如果我直接调用 WSB,它可以工作。因此,WSB 没有任何问题。在同事的建议下,我采用了特定于我的更改的代码并将其放入独立服务中。我确实 C&P 特定于我的代码和配置设置,并调整命名空间和类名。瞧,它起作用了。我的名为 WSB 的独立 Web 服务很好,可以得到我期望的数据。

我和一位同事检查了 WSB 所在的 IIS 服务器上的日志(服务的 IIS 日志和 HTTPERR 日志),以查看是否提到了 400 错误。我们没有找到。

所以我们在这一点上有点困惑。我们唯一能想到的可能是网络配置中的某些东西可能会产生干扰,但不知道它可能是什么。

如果您对其他地方有什么建议会有所帮助。

很高兴知道为什么它没有落入我的错误处理程序中。

谢谢。

更新:有人要求我添加配置和代码。老实说,我认为这不会有帮助,而且非常简单。由于公司原因,我不能放真正的代码,但基本上是这样的:

在网络配置中:

    <configuration>
    <appSettings>
    <add key="endpointUrl" value = "someurl" />
    </appSettings>
    .
    .
    .
     <applicationSettings>
        <MyService.Properties.Settings>
          <setting name="MyService_TheirService"
            serializeAs="String">
            <value>someurl</value>
          </setting>
    </MyService.Properties.Settings>
  </applicationSettings>

即使数据非常小,我也尝试过进行大型阅读器设置等:

<binding name="CustomHtttpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="01:50:00" openTimeout="01:50:00" sendTimeout="01:50:00" receiveTimeout="01:50:00" >
          <readerQuotas maxDepth="128"
             maxStringContentLength="8388608"
             maxArrayLength="2147483646"
             maxBytesPerRead="4096"
             maxNameTableCharCount="16384" />
        </binding>

代码:

using MyService.TheirService
.
.
.
var theirURL = ConfigurationManager.AppSettings["endpointUrl"];

var oSvc = new TheirServiceObject
{
    Url = theirURL
};

int numberIneed = oSvc.SomeMethod();

最后一行是抛出 400 的地方。

更新 2:

一位同事向我展示了如何使用 Fiddler。我现在可以看到对 WSB 的请求绝对是垃圾。

xڭ s 6 mr!!u \ .3 5'3 G QOH>Iп kX M3 ~vY ) X e Z w ~ :jv -˴wڽHb Yqv A :(Q Z; >9W O0g 6 .ɖVlU Ţ 8Z

一些奇怪的编码?至少这是另一个线索。

【问题讨论】:

  • 发布一些代码和配置部分会有所帮助,否则您很可能会得到我们非常笼统且可能没有帮助的唯一答案。

标签: web-services wcf bad-request


【解决方案1】:

想让您知道此问题已解决。另一个曾在此服务上工作过但不再只是碰巧路过的开发人员说:“嘿!看看这个!”

他们看到垃圾请求数据并说“这看起来像压缩。在项目中查找压缩。”

原来有一个自定义压缩组件正在压缩服务的传出数据,您需要添加 2 行代码来解压缩。将这些行添加到我的方法的顶部后,一切都立即生效。

这里的教训是,如果您的项目正在做一些不合理的奇怪事情,请尝试尽可能多地找到以前从事过该项目的人,即使他们不再从事该项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2018-04-07
    • 2012-04-27
    • 2015-11-24
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多