【问题标题】:AJAX Call To ASMX Web Service Intermittent FailureAJAX 调用 ASMX Web 服务间歇性失败
【发布时间】:2012-01-26 11:18:38
【问题描述】:

我正在调查从 AJAX 调用 Web 服务的问题,它间歇性地出现以下错误:

异常信息:
异常类型:InvalidOperationException
异常消息:无法识别 URL 意外以“/GetType”结尾的请求格式。

这类似于以下问题,但大部分时间都有效 - 只是间歇性失败。

Request format is unrecognized for URL unexpectedly ending in

UI 每隔几秒轮询一次,并且工作正常,直到某些状态发生变化,然后相同的调用失败大约 1 分 30 秒,然后它们继续工作。

Firebug 中成功调用和失败调用的 POST 数据是相同的:

lastResult=''&lastState=33&random=0.7584943767104781

以下配置适用于网络服务

<location path="TypeService.asmx">
    <system.web>
        <webServices>
            <protocols>
                <add name="HttpPost"/>
            </protocols>
        </webServices>
        <authorization>
            <allow users="*"/>
            <allow users="?"/>
        </authorization>
    </system.web>
</location>

我相信配置是正确的,因为调用可以长时间工作。轮询机制在任何时候都不会改变。除了其他问题中提到的配置修复之外,还有其他原因导致此错误消息吗?

【问题讨论】:

    标签: c# ajax web-services


    【解决方案1】:

    经过进一步调查,我们发现我们收到此错误是由于服务构造函数中的实际代码错误 - 所以这是隐藏错误之一,错误消息并不能真正表明问题。

    【讨论】:

      【解决方案2】:

      确保在 jquery ajax 调用应该是这样的,

      $.ajax({
          type: "GET",
          url: "/ajax.asmx/YOUR_METHOD",
          data: "{}",
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function (msg) { }
      })
      

      【讨论】:

      • 实际上,它必须是 POST 并且它可以工作,因为正如我在我的问题中所说的那样,问题是间歇性的。我也没有在这个项目中使用 jQuery。如果来自 JavaScript 的 AJAX 调用不正确,则问题不会是间歇性的,只是无法正常工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2010-10-29
      • 1970-01-01
      相关资源
      最近更新 更多