2013-05-30 3 views
2

Мой веб-сервис возвращает все строковые переменные. Теперь я хочу изменить мою службу, чтобы она могла вернуть объект HashTable. Это подпись моего WebService точка входа (метод):Как вернуть 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-запроса?

Update:

Исключение: The type System.Collections.Hashtable is not supported because it implements IDictionary.

+1

что возвращение ошибки по службе? – Talha

+5

'HashTable', 90-х снова ... – gdoron

+1

Я уверен, что параметры' out' не поддерживаются в подписи веб-службы. Вы также можете столкнуться с проблемами сериализации, особенно на разных платформах (строка является общеизвестным типом, но .NET Hashtable не является). Тем не менее, Hashtable * * помечен как сериализуемый, поэтому первое, что я попробую, это использовать его как возвращаемое значение. –

ответ

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. 
1

Я думаю, вы должны создать свой собственный объект или создать массив. Вы можете преобразовать его обратно в HashTable. Использование выходных параметров также не очень хорошая идея. Лучше создать собственный класс с свойствами IsAuthenticated и Tryempts as.

1

Вы можете легко конвертировать HashTable к List<KeyValuePair<string, string>> и вернуться, что ...

Вместо возвращения структуры данных, думать о возвращении данных - и восстановление структуры данных на стороне клиента.

Смежные вопросы