Вот быстрый ответ, который кто-то может расширить.
Когда вы используете приложение шаблонов WSDL (WSDL.exe) для создания оболочек служб, оно создает класс типа SoapHttpClientProtocol. Вы также можете сделать это вручную:
public class MyService : SoapHttpClientProtocol
{
public MyService(string url)
{
this.Url = url;
// plus set credentials, etc.
}
[SoapDocumentMethod("{service url}", RequestNamespace="{namespace}", ResponseNamespace="{namespace}", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public int MyMethod(string arg1)
{
object[] results = this.Invoke("MyMethod", new object[] { arg1 });
return ((int)(results[0]));
}
}
Я не тестировал этот код, но думаю, что он должен работать автономно, без запуска инструмента WSDL.
Код, который я предоставил, - это код вызывающей стороны, который подключается к веб-службе через удаленный вызов (даже если по какой-то причине вы не хотите, чтобы он был удаленным.) Метод Invoke заботится об упаковке это как вызов мыла. Код @Dave Ward верен, если вы хотите обойти вызов веб-службы через HTTP - до тех пор, пока вы действительно сможете ссылаться на класс. Возможно, внутренний тип не «MyService» - вам нужно проверить код элемента управления, чтобы точно знать.