2012-01-12 64 views
0

我已經創建了一個asp.net web服務,並且正在嘗試使用我的客戶端進行測試。我正在測試的web方法返回一個名爲GetAllTicketsSinceLastPullDateResult的自定義對象,它包含一個自定義clsTrip對象的ArrayList和一個名爲FaultResponse的自定義對象。這是我如何使用我的客戶:asp.net web服務,錯誤生成XML文檔

ServiceReference1.ServiceSoapClient myClient = new ServiceReference1.ServiceSoapClient(); 
     ServiceReference1.GetAllTicketsSinceLastPullDateResult result = new ServiceReference1.GetAllTicketsSinceLastPullDateResult(); 

     result = myClient.getAllTicketsSinceLastPullDate(myUser); 

,但我得到了以下錯誤:

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type clsTicket was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically. 

我谷歌錯誤,最讓我找到答案的有序列化派生類的事情。但是我的clsTicket類不是派生類。什麼可能導致這個錯誤?我如何使用XmlInclude或SoapInclude?

在此先感謝!

回答

2

好吧,我終於得到它的工作,我最終把下面一行:

[XmlInclude(typeof(clsTicket))] 

之間[WebMethod]和我的方法的定義。到現在爲止還挺好。

1

自從最初爲您的項目添加引用後,您是否更新過服務?如果您使用Visual Studio的「添加Web引用」功能並更新服務,則通常會有配置或參數機會,從而可能會生成SOAP錯誤。

嘗試通過visual studio右鍵點擊有問題的Web服務並選擇「更新」選項。重新編譯應用程序,看看是否可以解決您的問題。

+0

感謝您的回覆。是的,我已經嘗試過,無濟於事。 – PaulG 2012-01-12 15:21:23

2

我不認爲你需要「新」的結果:

ServiceReference1.GetAllTicketsSinceLastPullDateResult result; 
result = myClient.getAllTicketsSinceLastPullDate(myUser); 

而且,你怎麼知道錯誤是不是在服務器上? 你可以用網頁瀏覽器調用這個功能嗎?

+0

我通過我的網絡瀏覽器試過這個,我實際上得到了同樣的錯誤信息。所以它可能是服務器。仍然不知道如何處理這個。 – PaulG 2012-01-12 15:46:46

+1

可能嗎?當然,這是服務器代碼! – 2012-01-12 15:54:36