【问题标题】:ASP.NET Web Service SoapException When Client Built With MSBuild使用 MSBuild 构建客户端时的 ASP.NET Web 服务 SoapException
【发布时间】:2013-02-21 18:27:30
【问题描述】:

我有一个 .NET (2.0) Windows 窗体应用程序,它使用作为 .NET (3.5) 网站的一部分托管的 ASP.NET Web 服务。该网站托管在运行 IIS7 的 Windows 服务器上。当我在 Visual Studio (2010) 中运行 Forms 应用程序时,我可以毫无问题地使用 Web 服务。但是,当我使用 MSBuild (4.0) 构建 Forms 应用程序时,它会构建并运行,但使用该服务时会引发以下异常:

System.Web.Services.Protocols.SoapException: Server was unable to read request. --->
System.InvalidOperationException: There is an error in XML document (the line number
varies). --->     System.FormatException: Input string was not in a correct format.

我使用 MS 网络监视器查看 SOAP 以查看 XML 文档中的问题所在。似乎至少有一个标签没有被正确解析。例如,MS 网络监视器显示以下明显损坏的标签之一:

- Element: XmlElement:<Country> - USA</
    - STag: <Country>
        - Tag: <Country>
            - TagName: Country
                Name: Country
    Content: USA</

无法识别 ETag(结束标记)。内容应为“USA”,ETag 应为“&lt;/Country&gt;.

为什么会这样?具体来说,在 Visual Studio 中运行的应用程序与使用可能导致此问题的 MSBuild 构建的应用程序之间有什么区别?我比较了构建输出,它们是相同的文件,但其中一些文件之间存在大小差异。

【问题讨论】:

  • 你怎么知道标签是如何被解析的?
  • @JohnSaunders 我在帖子中添加了一个来自 MS 网络监视器的视图,该视图显示了一个似乎是错误解析的标签的示例。
  • MS 网络监视器可能会以一种方式解析标签,而 ASMX 可能会以另一种方式解析它。网络监视器没有向您显示 ASMX 解析的结果 - 两者是独立解析的。请发布 SOAP 消息本身的那部分,而不是任何代码对它的解释。
  • 请在两种情况下都显示 SOAP - 使用和不使用 MSBUILD。

标签: asp.net web-services soap msbuild asmx


【解决方案1】:

事实证明,这是由过期的 Web 服务代理类引起的。在客户端应用程序中更新 Web 引用解决了该问题。

【讨论】:

    猜你喜欢
    • 2016-01-07
    • 2011-03-25
    • 2013-06-28
    • 2014-09-04
    • 2010-12-23
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多