2014-04-16 53 views
0

這是我asmx WebService的方法:將List <KeyValuePair <string,string >>傳遞給WebService有什麼困難?

[WebMethod] 
public string GetHeader(List<KeyValuePair<string, string>> signature_additional_parameters) 
{ 
    return "ok"; 
} 

,但是當我把它從另一個應用程序:

var signature_additional_parameters = new List<KeyValuePair<string, string>>(); 
signature_additional_parameters.Add(new KeyValuePair<string, string>("test", "my data")); 

var header = MyWS.GetHeader(signature_additional_parameters); 

它說:爲「WSArchieSocial.WSModuloSocial.GetHeader的最佳重載的方法匹配(WSArchieSocial。 KeyValuePairOfStringString [])'有一些無效參數

爲什麼使用那WSArchieSocial.KeyValuePairOfStringString[]?我該如何解決它?

+0

看看[如何將名稱/值對傳遞給ASMX Web方法?](http://stackoverflow.com/questions/4788571/how-to-pass-name-value-pairs-to -an-asmx-web-method) –

回答

1

您的網絡服務正在等待KeyValuePair陣列。只需在您的名單上撥打ToArray即可解決您的錯誤。

var header = MyWS.GetHeader(signature_additional_parameters.ToArray()); 

我想它與您爲服務添加引用的方式有關。您可以在添加服務引用的同時指定集合類型,默認值爲數組,這就是爲什麼它將數組視爲List<KeyValuePair>

您可以選擇收集類型,在添加服務時轉到高級。 enter image description here

+0

沒有任何反應。它會打印相同的錯誤消息:O – markzzz

+0

@markzzz,再次添加引用,然後從集合類型中選擇「GenericList」,如圖所示。 – Habib

+0

我正在添加Web引用,而不是服務引用(第二個屏幕添加Web引用下面的按鈕)。該DataType似乎被忽略:O – markzzz

相關問題