Предпосылки
Я разрабатываю элемент управления на стороне сервера ASP.Net, который должен взаимодействовать с веб-службой ASMX. Элемент управления на стороне сервера использует объект WebClient
для взаимодействия с веб-службой, поскольку его необходимо часто повторно использовать в различных приложениях, и для упрощения работы разработчиков им не требуется создавать ссылку на службу. в веб-службу.
Реализация
Во время использования элемента управления требуется отправка сериализованного объекта веб-службе. Объект сериализуется с помощью XmlSerializer
, а затем результирующая строка XML сжимается с использованием библиотеки сжатия chilkat. Вызов веб-службы для элемента управления выглядит следующим образом:
webClient.UploadStringAsync (новый Uri (serviceHost + serviceMethod), «POST», sendData)
Содержимое sendData ( строка
) равно compressedResponse = {CompressedData}
.
У веб-службы есть метод, определенный следующим образом, для получения данных и последующего распаковки строкового значения с помощью библиотеки chilkat перед десериализацией объекта с помощью XmlSerializer
.
public void SaveResponse (string compressedResponse)
Связь между элементом управления и службой работает. Первоначально не было никаких настроек или привязок, определенных в web.config
для любого из вышеперечисленных. После первоначального поиска я добавил
для файлов клиента и сервера web.config
. Это не имело никакого значения.
Проблема
Сжатые или несжатые данные, отправляемые в веб-службу в переменной sendData
, слишком велики для обычного запроса POST и повреждены. Это подтверждается при проверке последних нескольких символов строки до и после того, как она была отправлена на сервер в сжатом формате и в несжатом виде, в документе Xml отсутствует последний корневой тег при проверке в отладчике. Строка
не может быть распакована, поэтому вызов службы каждый раз терпит неудачу.
Как мне увеличить размер POST для запроса WebClient
, чтобы гарантировать получение сервером полной строки?
Я просмотрел различные варианты в Google, но ни один из них не дает мне достаточно точного примера того, где нужно внести изменения, или примеров того, как изменения должны выглядеть. Я совершенно не понимаю, нужно ли вносить изменения на сервере или на веб-сайте-потребителе, и, поскольку для этого нет привязки, как создать привязку в web.config
для ASMX Вызов службы HTTP.