我应该在DuplexClientBase构造函数的“endpointConfigurationName”中指定什么?

时间:2012-02-21 03:26:52

标签: c# .net wcf wcf-client

我应该在DuplexClientBase构造函数的“endpointConfigurationName”参数中指定什么?

无论我放在哪里,客户端抛出的行为都是“无法在ServiceModel客户端配置部分找到引用合同'ServiceReference1.IClientFulfillmentPipeService'的默认端点元素。这可能是因为找不到配置文件应用程序,或者因为在客户端元素中找不到与此合同匹配的端点元素。“

我使用“添加服务引用”向导生成代理。这是客户端的源代码:

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 个答案:

答案 0 :(得分:2)

看起来我不能使用这个构造函数,除非我添加.xml配置文件。

我最后使用另一个以CustomBindingEndpointAddress作为参数。