【发布时间】:2015-04-24 14:36:54
【问题描述】:
我创建了一个 ASMX Web 服务来处理来自第三方应用程序的请求。我使用了他们提供给我们的 WSDL 作为请求和响应的规范。我已经满足了这些要求,并启动并运行了我的服务。我可以使用Storm 很好地测试应用程序。当我们尝试从第三方应用程序访问 Web 服务时,请求失败,因此我们设置 WireShark 来监视请求。
我们从数据包捕获中看到的是“[InvalidOperationException]:请求格式无法识别,因为 URL 意外以 /MyMethodName 结尾”。通过一点研究,我找到了this article。我们尝试过并开始收到不同的错误消息。这是错误消息/堆栈:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Web.Services.Protocols.HttpServerType..ctor(Type type)
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
我已经尝试了 SO 文章中的大部分建议,并决定退后一步,从 Web 配置中一起删除 Web 服务协议。所以,回到原样。经过进一步调查,我注意到发送到我们的 Web 服务的请求包含我认为格式错误的 XML 声明。
<?requestXml version='1.0' encoding='UTF-8'?>
这可能是我头痛的原因吗?如果是这样,我该如何处理?我显然无法对第三方应用程序进行更改。
【问题讨论】:
-
我会编写一个处理程序,它只接受原始请求,记录它,然后应用自定义解析器,这将允许您处理错误(但无法修复)的请求
标签: c# xml web-services soap