2013-02-21 90 views
0

我有一个.NET(2.0)Windows窗体应用程序,它使用作为.NET(3.5)网站的一部分托管的ASP.NET Web服务。该网站托管在运行IIS7的Windows服务器上。当我在Visual Studio(2010)中运行Forms应用程序时,我可以毫无问题地使用Web Service。然而,当我建立与MSBuild的(4.0)的表单应用程序,它建立和运行,但在使用服务的以下异常被抛出:当使用MSBuild构建客户端时ASP.NET Web服务SoapException

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应该是“</Country>.

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

+0

你怎么知道标签是如何被解析的? – 2013-02-21 19:35:14

+0

@JohnSaunders我在帖子中添加了一个来自MS网络监视器的视图,它显示了一个看起来不正确的解析标签的例子。 – 2013-02-22 18:10:39

+0

MS网络监视器可能会以某种方式解析标记,而ASMX可能会解析另一个标记。网络监视器没有向您显示ASMX解析的结果 - 这两个解析是独立的。请张贴SOAP消息本身的部分内容,而不是任何代码对它的解释。 – 2013-02-22 18:23:04

回答

0

事实证明,这是由过时的Web服务代理类造成的。更新客户端应用程序中的Web引用可解决问题。