我创建了一个ASMX Web服务来处理来自第三方应用程序的请求。我使用了他们给我们的WSDL作为请求和响应的规范。我已满足这些要求并启动并运行我的服务。我可以使用Storm测试应用程序。当我们尝试从第三方应用访问网络服务时,请求失败,因此我们设置WireShark来观看请求。
我们从数据包捕获中看到的是“[InvalidOperationException]:对于意外以/ MyMethodName结尾的URL无法识别请求格式”。通过一些研究,我找到了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'?>
这可能是我头痛的原因吗?如果是这样,我该如何处理?我显然无法对第三方应用程序进行更改。
答案 0 :(得分:0)
我必须创建一个通用处理程序来处理这个问题。 XML解析器并不关心XL声明标记格式错误。