Я создаю веб-сервис, который, по сути, дистанционно управляет некоторыми вызовами базы данных (чтобы они происходили через HTTP, а не по умолчанию порт SQL Server 1433).
По сути, я пытался передать номерпараметров в WebMethod на веб-сервисе ASMX.Параметры:
- Строка, представляющая идентификатор запроса, который будет выполнен.
- DataTable, представляющий структуру таблицы, в которую должна быть заполнена информация.
- Словарь параметров (т. Е. Пары имя-значение), который нужно запустить с запросом, представленным идентификатором выше дляполучить ожидаемые результаты.
- Логическое значение, которое не имеет значения для этого вопроса
Теперь у меня проблема в том, что строка для идентификатора, DataTable и логического значения все проходят просто отлично, ноСловарь не имеет.Я знаю, что по умолчанию все, что реализует IDictionary, не поддерживается XMLSerializing, поэтому я преобразовал словарь в два массива объектов, один для ключей и один для значений.
Из чего я отправляюКлиент выглядит правильно.Пакет SOAP содержит правильные значения как для массива ключей, так и для массива значений.
То, что я получаю на стороне WebService (я могу разбить WebMethod, как он называется), равно нулю для обоих измассивы.Не пустой массив, просто ноль.
Я много чего пробовал, чтобы передать эти параметры в веб-сервис (закодировал SerializableDictionary, попытался вставить пары ключ / значение в таблицу данных, попыталсяпросто использовать два строковых массива и затем преобразовать результаты обратно в правильные типы на стороне WebService), но мне совершенно не повезло.
Итак, я предполагаю, что в итоге мой вопрос:
Кто-нибудь знает хороший способ для успешной отправки пар имя-значение, где имя является строкой, а значение может быть практически любым типом объекта, но всегда будет сериализуемым объектом в WebService WebMethod, так что их имена-значенияправильно интерпретируется на сервисной стороне.