【问题标题】:Handling malformed XML tag using SOAP Web Service in C#在 C# 中使用 SOAP Web 服务处理格式错误的 XML 标记
【发布时间】: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


【解决方案1】:

我确实必须创建一个通用处理程序来处理这个问题。 XML 解析器并不关心 XL 声明标签的格式错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多