2

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

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

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

更新:

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

4

3 回答 3

2

将数据序列化为 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.
于 2013-05-30T07:38:57.343 回答
1

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

于 2013-05-30T07:11:10.803 回答
1

您可以轻松地将其转换HashTable为 aList<KeyValuePair<string, string>>并返回...

与其返回数据结构,不如考虑返回数据——并在客户端重建数据结构。

于 2013-05-30T07:15:41.810 回答