2012-04-25 97 views
1

您是否知道將某個對象或結構從一個winform應用程序傳遞給.asmx Web服務的好方法?在.NET中這似乎很容易,但我沒有看到它。將對象或結構傳遞給.asmx Web服務

裏克施特拉爾有同樣的問題,在2004年,但它看起來像不存在什麼我在尋找可能:

http://www.west-wind.com/weblog/posts/2004/Apr/18/Net-Web-Services-and-passing-objects-and-Data

基本上,我只是有10字符串或INT一個簡單的結構成員。我想將它發送到asmx web服務並保持強壯的輸入。而已。

我試着在客戶端和服務上定義結構。然後我創建了一個結構定義的DLL,並將其包含在我的Web服務和客戶端中。命名空間不同,仍然存在問題b/c。

我在下面的帖子中看到,似乎人們正在做我所描述的內容。我只是不知道如何:

Passing Objects Via Web Service

我可以在服務轉換爲WCF如果讓這變得更容易 - 可能會轉換它在幾個月反正。

+1

「b/c命名空間不同」是您的問題的關鍵,我們需要查看錯誤消息以及如何重現問題,請編輯您的問題以幫助診斷問題,謝謝! – 2012-04-25 02:23:37

回答

1

我不知道爲什麼我以前沒有想到它,但是傑里米的回答有幫助。我沒有在客戶端和服務上創建對象的定義,而是在Web服務上公開定義了結構。當我創建一個結構時,我只是確保它是global :: Webservice.com.mydomain.MyStruct類型。

0

你試過了什麼?你遇到什麼錯誤?你的代碼是怎樣的?

但是,您可能需要標記,其中要將實例傳遞到Web服務作爲[Serializable]MSDN)類這樣的:

[Serializable] 
public class MyObject 
{ 
    // Your properties here 
    // Your parameterless constructor 
} 

請注意,除了默認的(無參數)構造函數的一切,這些屬性將在序列化過程中被刪除。這是因爲將對象傳遞給Web服務時,實際上不是傳遞.NET對象,而是(串行化)數據。 應通過服務合同提供相應的類型。