【问题标题】:Webservice(asmx) returns array, not listWebservice(asmx) 返回数组,而不是列表
【发布时间】:2013-10-03 05:54:18
【问题描述】:

我有一个反序列化 web 方法,它返回 webservice(asmx) 中的数据列表,我从客户端调用该方法。但是,该方法给了我一个数组,而不是一个列表。我知道这是因为 SOAP 响应返回 xml 格式(或类似的格式..)
是否可以返回列表?如果是这样,请告诉我一个想法。
如果没有,请教我另一种方法。 (我不应该使用数组...)

service.asmx.cs

[WebMethod]
public IList<Person> DeserializeJson(string value)
{
        JavaScriptSerializer js = new JavaScriptSerializer();
        IList<Person> tableData = js.Deserialize<IList<Person>>(value);

        return tableData;
 }

Client.aspx.cs(WebService 是我的服务参考)

WebService.Service1SoapClient client = new WebService.Service1SoapClient();
string stream = client.CreateJsonFromDatabase();
List<WebService.Person> tableData = client.DeserializeJson(stream);

【问题讨论】:

  • ASMX 是一项遗留技术,不应用于新开发。 WCF 应该用于 Web 服务客户端和服务器的所有新开发。一个提示:微软已经在 MSDN 上停用了ASMX Forum
  • 我应该采用哪种技术而不是使用 ASMX? MVC?
  • WCF 是 ASMX 的替代品(并且做了很多、很多、更多)。

标签: web-services list soap asmx webservice-client


【解决方案1】:

Web 服务不返回数组,也不返回列表。它们返回 XML。它们返回的 XML 被客户端代码解释为列表、数组或其他任何内容。

如果您使用“添加服务引用”使用此服务,那么您将可以选择如何处理 XML 中的重复元素。您可以从 List、Array 或其他几个选项中进行选择。

【讨论】:

  • 谢谢约翰!那么,您是说我可以将 XML 转换为列表、数组等选项?
  • 我可以看到 client.DeseralizaJson(stream) 返回类型为“Client_Projet_Name.WebService.ActivityFlatTableColumns[]”,我理解这是一种数组?我想我迷路了。你能给我举个例子吗?
  • 请阅读我的博文“How to consume a web service”,看看它是否对您有帮助。此外,“Basics: How Web Services Work”直接解决了 XML 的问题。
猜你喜欢
  • 2012-04-12
  • 1970-01-01
  • 2017-05-24
  • 2020-06-02
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多