Динамическая реализация WSDL в C # - PullRequest
4 голосов
/ 31 августа 2010

Я относительно новичок в веб-службах в .Net, поэтому прошу прощения, если это вопрос новичка.

Я нашел множество ресурсов о том, как реализовать веб-сервисы в проекте .Net, но все они, кажется, включают статическое определение представленных методов. Хотя это может быть подходящим для некоторых приложений, оно не отвечает всем требованиям, которые мне нужны.

Интересно, есть ли способ динамически реализовать методы, предоставляемые в WSDL, например, как это делает PHP SoapClient ?

1 Ответ

7 голосов
/ 31 августа 2010

WSDL действительно существует для того, чтобы помочь определить имена методов и параметры, а также замаскировать все заголовки HTTP для вас, разработчика.

Похоже, вы хотите указать имя метода и параметры во время выполнения.Возможно, для решения этой проблемы нужно полностью забыть о WSDL.Выполните свои собственные вызовы HTTP.

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(
      "http://foo.com/Some.asmx"); //build string from .config instead.

//here Register is the name of the method. take yours from config as well if needed
req.Headers.Add("SOAPAction", "\"http://tempuri.org/Register\"");

req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";

См. Статью Динамический вызов веб-службы с использованием HttpWebRequest для получения полной информации.

Что касается классов оболочки веб-службы.В общем, они пытаются помочь исполнить серверные контракты с клиентом.Очевидно, вы пытаетесь избежать изменения статически типизированных клиентов, как это представлено классами-оболочками .NET.Надеюсь, это не будет слишком обременительным для вас.

...