ArrayOfString
ArrayOfString
ArrayOfString
解決C#客戶端 ArrayOfString 參數問題。(希望搜索引擎能搜到,幫你解決神奇的ArrayOfString)
ASP.NET 服務端添加 asmx WebService文件,並添加如下方法。注意只添加這個如下方法:
參數為字符串數組:
[WebMethod]
public string HelloWorld(string[] inputs)
{
return "Hello World";
}
其他項目添加服務器引用這個WebService (其實是wsdl.exe 程序根據 WebService 聲明的WDSL文件自動生成代碼。)
生成如下代碼
public string HelloWorld(ConsoleApp2.ServiceReference1.ArrayOfString inputs)
注意:參數string[] 變為ArrayOfString 對象。。。
神奇的是,用了這么多年的WebService 都沒發現有這問題。。
[WebMethod]
public string HelloWorld(string[] inputs)
{
return "Hello World";
}
//添加下邊的這個方法后,重新引用,上邊的string[] 參數就不會變成ArrayOfString對象。。。
[WebMethod]
public DataTable AddTable()
{
return null;
}
對比兩個WDSL,只要添加DataTable,WDSL里的聲明結構就不一樣了。。。
//沒有添加Datatable 的WebService會導致聲明的string[]參數變為ArrayOfString 對象
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient();
client.HelloWorld(new ServiceReference1.ArrayOfString());
//添加Datatable聲明的WebService就是正常的
ServiceReference2.WebService2SoapClient client2 = new ServiceReference2.WebService2SoapClient();
string[] input = new string[0];
client2.HelloWorld(input);
DEMO:
