我应该在 DuplexClientBase 构造函数的“endpointConfigurationName”参数中指定什么?
无论我在那里放什么,客户端都会抛出提示 “无法在 ServiceModel 客户端配置部分找到引用契约(Contract)‘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 配置。
你能帮帮我吗?
看起来我不能使用这个构造函数,除非我添加 .xml 配置文件。
我最终使用了另一个将 CustomBinding
和 EndpointAddress
作为参数的。
我是一名优秀的程序员,十分优秀!