Что я должен указать в "endpointConfigurationName" конструктора DuplexClientBase? - PullRequest
2 голосов
/ 21 февраля 2012

Что я должен указать в параметре "endpointConfigurationName" конструктора DuplexClientBase?

Независимо от того, что я поместил туда, клиент создает исключение, которое говорит "Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'ServiceReference1.IClientFulfillmentPipeService'в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации или из-за того, что в элементе клиента не найден элемент конечной точки, соответствующий этому контракту. "

Я сгенерировал проксис помощью мастера «Добавить ссылку на сервис».Вот исходный код клиента:

class Program
{
    static void Main()
    {
        try
        {
            var client = new ClientFulfillmentPipeServiceClient(new InstanceContext(new Wrapper()), "*", "net.tcp://localhost:9000/svc");
            client.Initialize(1234, "Test");
            client.Close();
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

И у меня есть пример сервера WCF, написанный как консольное приложение.Вот реализация:

static void Main()
{
    UiWcfSession.OnInitialize += ClientInitialize;

    var baseAddresses = new Uri("net.tcp://localhost:9000/");

    var host = new ServiceHost(typeof(UiWcfSession), baseAddresses);

    var reliableSession = new ReliableSessionBindingElement { Ordered = true, InactivityTimeout = TimeSpan.MaxValue };
    var binding =
        new CustomBinding(reliableSession, new TcpTransportBindingElement()) { ReceiveTimeout = TimeSpan.MaxValue };

    host.AddServiceEndpoint(typeof(IClientFulfillmentPipeService), binding, "svc");

    var metadataBehavior = new ServiceMetadataBehavior();
    host.Description.Behaviors.Add(metadataBehavior);
    var mexBinding = MetadataExchangeBindings.CreateMexTcpBinding();
    host.AddServiceEndpoint(typeof(IMetadataExchange), mexBinding, "mex");

    host.Open();

    Thread.CurrentThread.Join();
}

private static void ClientInitialize(int uiprocessid, string key)
{
    Debug.WriteLine("ClientInitialize");
}

Я не использую конфиги xml.

Не могли бы вы мне помочь?

1 Ответ

2 голосов
/ 21 февраля 2012

Похоже, я не могу использовать этот конструктор, если не добавлю XML-файл конфигурации.

В итоге я использовал другой, который принимает CustomBinding и EndpointAddress в качестве параметров.

...