如何从WebService返回一个哈希表

本文关键字:一个 哈希表 WebService 返回 | 更新日期: 2023-09-27 18:15:55

我的webservice返回所有字符串变量。现在我想修改我的服务,以便它可以返回HashTable对象。这是我的WebService入口点(方法)的签名:

public void getPrevAttempts(string fbUserId, string studentId, string assessmentId, out string isAuthenticated, out HashTable attempts) 

HashTable中的记录是从SQL查询的结果中插入的。每当我试图运行我的服务时,我都会被重定向到accessdenie .htm页面(因为我的Web。配置中有这个条目(<customErrors mode="On" defaultRedirect="accessdenied.htm"/>)。是否有任何方法返回HashTable或SQL查询的结果?

<标题>更新:

例外:The type System.Collections.Hashtable is not supported because it implements IDictionary.

如何从WebService返回一个哈希表

将数据序列化为JSON字符串并返回给客户端。

var serializer = new JavaScriptSerializer();
HashTable ht = New HashTable();
//Populate ht.
response = serializer.Serialize(ht) // This will serialize the data to JSON format.

在客户端,使用

反序列化
httpResponse = JSON.parse(response); //httpResponse will have key value pair data as you created in server.

我认为你应该创建自己的自定义对象或创建一个数组。然后可以将其转换回HashTable。使用out参数也不是一个好主意。最好创建一个带有IsAuthenticated和Attempts属性的自定义类。

您可以轻松地将HashTable转换为List<KeyValuePair<string, string>>并返回…

不返回数据结构,而是考虑返回数据-并在客户端重建数据结构。