2010-02-18 3 views
1

У меня есть метод веб-службы, разработанный с использованием .NET 3.5 (VS2008), который ожидает несколько строк (имя пользователя, пароль, тема, тип файла) и двоичный документ, закодированный в Base64.HTTP POST комплексные запросы с .NET

Я включил как SOAP, так и HTTP POST. Хотя SOAP работает отлично, отправлять HTTP-запросы POST невозможно. Ответы сервера с «Сервером не удалось обработать запрос. --- > Данные на корневом уровне недействительны. Строка 1, позиция 1».

Клиенты используют этот метод для загрузки своих документов из своих приложений.

Мне сказали, что .NET не поддерживает сложные структуры, используя HTTP POST. Любой способ поддержать это?

ответ

0

Похоже, вы хотите перейти от настольного приложения к веб-приложению asp.

Хотя это, как правило, отличная идея, я думаю, вы будете сражаться в гору, пытаясь отправить файлы через http/form на ваш веб-сервис. Хотя технически это возможно, мне трудно думать о реализации.

Возможно, вам повезло с использованием формы в качестве прокси-сервера с вашими входными переменными и ввода файла для отправки в форму, например. веб-форму и использовать код на веб-форме, чтобы развернуть экземпляр вашего класса webservice (нет необходимости использовать прокси-сервер, вы уже на вашей стороне провода).

Если это не имеет смысла, дайте мне знать, и если это невозможно сделать в соответствии с вашим сценарием, обновите свой вопрос, чтобы более четко указать желаемый результат.

Если вы делаете это через Ajax, отрисуйте свой класс обслуживания с помощью атрибута [ScriptService] и отправьте JSON через xmlhttp. Вы можете легко отправить сложные аргументы.

см. http://www.codeproject.com/Articles/38999/Consuming-ASP-net-WebServices-WCF-Services-and-sta.aspx для получения инструкций.

Если вы этого не сделаете, уточните, что делает публикацию и как вы упаковываете данные.

+0

Я обновил свой вопрос: клиенты получают доступ к этому методу для загрузки своих документов на службу. – user240113

+0

@ user240113, я обновил свой ответ. Я думаю, вам нужно пересмотреть свой запланированный подход и я хочу помочь. уточните свой желаемый результат. –

1

.NET поддерживает сложные структуры, используя POX (простой старый xml) с httpBinding. Вот статья, которая объясняет, как установить его: http://fluxcapacity.net/2007/11/06/how-to-create-restpox-web-services-with-wcf/

Примечания: Все SOAP, XML и JSON DTO обновлений по-прежнему работать над HTTP POST - SOAP только окружит полезную нагрузку с дополнительной разметкой, которая эффективна только добавляет дополнительные накладные расходы и сложность для клиентов веб-сайта (например, Ajax).

Если вы хотите, чтобы ваш же веб-сервис работал над SOAP, а также другими конечными точками, например. XML или JSON, вас может заинтересовать этот opensource webservices framework, который позволяет использовать все эти конечные точки без какой-либо дополнительной настройки.

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

  • Нет связанных вопросов^_^