代码之家  ›  专栏  ›  技术社区  ›  CMason

Web服务错误400-请求错误

  •  0
  • CMason  · 技术社区  · 7 年前

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

    服务器返回错误:(400)请求错误。“)。引发异常: 'System.Net。系统中的“WebException”。dll(“远程服务器返回 错误:(400)请求错误。“)

    没有给出理由。同样让我困惑的是,这个错误并没有被我抓住。当我调试并点击调用WSB的代码行时,就像重置一样。我的WSA不会执行更多代码,也不会引发任何错误。

    如果我直接调用WSB,它就会工作。所以WSB没有问题。在同事的建议下,我将特定于我的更改的代码放在一个独立的服务中。我字面上是C&P特定于我的代码和配置设置,并调整命名空间和类名。你瞧,它起作用了。我的独立web服务称为WSB,很好地获得了我期望的数据。

    所以在这一点上我们有点困惑。我们唯一能想到的可能是web配置中的某些内容可能会干扰,但不知道可能是什么。

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

    谢谢

    更新:我被要求添加配置和代码。老实说,我认为这不会有什么帮助,而且这相当简单。由于公司原因,我无法输入真正的代码,但基本上是这样的:

    在web配置中:

        <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();
    

    更新2:

    一位同事教我如何使用小提琴。我现在可以看到,对WSB的请求是绝对垃圾。

    x s 6 mr!!u \.3 5'3克QOH>I kX M3~vY)X e Z w~:jv-wHb Yqv A:(Q Z;gt;9W O0g 6.VlU 8Z <(t eSv U)r$N\

    1 回复  |  直到 7 年前
        1
  •  0
  •   CMason    7 年前

    想让你知道这个问题已经解决了。另一个开发人员以前也参与过这项服务,但现在已经不是偶然了,我说“嘿!看看这个!”

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

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

    这里的教训是,如果你的项目正在做一些不合理的奇怪的事情,试着找到尽可能多的人,即使他们已经不再做了。