Программно создавать конечные точки в службе .NET WCF - PullRequest
7 голосов
/ 17 ноября 2011

У меня есть класс, предназначенный для работы с веб-сервисом. Сейчас я написал это для запроса http://www.nanonull.com/TimeService/TimeService.asmx.

Класс будет использоваться унаследованным приложением, использующим VBScript, поэтому его создание будет осуществляться с использованием соглашений Namespace.ClassName.

У меня проблемы с написанием кода, чтобы привязки и конечные точки работали с моим классом, потому что я не смогу использовать файл конфигурации. Примеры, которые я видел, обсуждают использование SvcUtil.exe, но мне неясно, как это сделать, если веб-служба является внешней.

Кто-нибудь может указать мне правильное направление? Это то, что у меня есть, и компилятор падает на IMyService:

 var binding = new System.ServiceModel.BasicHttpBinding();
        var endpoint = new EndpointAddress("http://www.nanonull.com/TimeService/TimeService.asmx");

        var factory = new ChannelFactory<IMyService>(binding, endpoint);

        var channel = factory.CreateChannel(); 


        HelloWorld = channel.getCityTime("London");

1 Ответ

8 голосов
/ 17 ноября 2011

Дарджан прав.Предлагаемое решение с веб-сервисом работает.Командная строка для генерации прокси с svcutil:

svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://www.nanonull.com/TimeService/TimeService.asmx

. Вы можете игнорировать app.config, однако добавьте генерируемый Proxy.cs в ваше решение.Далее вы должны использовать TimeServiceSoapClient, взгляните:

using System;
using System.ServiceModel;

namespace ConsoleApplication
{
  class Program
  {
    static void Main(string[] args)
    {
      TimeServiceSoapClient client = 
        new TimeServiceSoapClient(
          new BasicHttpBinding(), 
          new EndpointAddress("http://www.nanonull.com/TimeService/TimeService.asmx"));

      Console.WriteLine(client.getCityTime("London"));
    }
  }
}

В основном это все!

...