Как управлять форматом вывода в веб-службе ASP.Net

Мы переходим от устаревшего приложения, написанного на ColdFusion, к приложению ASP.Net Web Forms. Одним из требований является переход на устаревшую веб-службу. Адрес может меняться, но формат ввода и ответов должен быть одинаковым. Я относительно новичок в веб-службах, но я знаю, что для веб-службы .Net существуют форматы вывода SOAP и JSON (возможно, другие). Но ни то, ни другое не работает.

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

Есть ли что-то подобное для .ASMX?

Есть ли более разумный способ сделать это и при этом иметь возможность интегрироваться с остальной кодовой базой веб-приложения ASP.Net?


person Jared    schedule 30.07.2009    source источник


Ответы (4)


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

person Brandon    schedule 30.07.2009
comment
Это именно то, что мне нужно знать, как иметь ПОЛНЫЙ контроль над выходом. Спасибо - person Jared; 30.07.2009

Вы можете использовать WCF для реализации простого старого XML (POX) вместо SOAP.

WebHttpBinding — это привязка, используемая для этого. Если ваш «полный контроль» исключает возможность обратной разработки существующей службы в явный контракт WCF, вы можете использовать Потоковая передача для получения полного контроля над выводом.

person Randy supports Monica    schedule 30.07.2009

Зависит от формата, который вам нужен.
ASMX и WCF будут генерировать добросовестные ответы SOAP.
Если я правильно понял, вы сказали, что "SOAP не работает". Если вам нужен нечетный формат, вы, безусловно, можете создать его так, как вы описали на странице ASPX. Однако модель программирования будет не такой приятной.

person Cheeso    schedule 30.07.2009

Какую версию Visual Studio вы используете? Если у вас Visual Studio 2008 (SP1), вам не следует создавать веб-службу ASMX. Теперь Microsoft считает эту технологию «устаревшей» и не планирует исправлять в ней какие-либо ошибки.

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

person John Saunders    schedule 30.07.2009