2013-02-21 89 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引用可解決問題。