我的WCF在我的服务参考中,当我运行我的WCF的同时运行我的WPF使用visual studio运行多项目然后一切正常,但我现在连接多个客户端,如果他们开始在没有输入数据之前的同时它可以工作。如果一个开始输入数据然后另一个开始,则擦除输入的数据。我试过它,所以它将从我的WPF运行主机开始。不幸的是我得到一个错误,说httpGetEnabled需要是假的,如果这是假的,那么我无法更新我的服务引用,因为它说存在访问问题。我用来尝试运行主机的代码是。
try
{
ServiceHost host;
Service1.Service1Client service = new Service1.Service1Client();
string baseAddress = "http://localhost:59849/Service1.svc";
host = new ServiceHost(typeof(Service1.Service1Client));
host.AddServiceEndpoint(typeof(Service1.IService1),new BasicHttpBinding(), baseAddress);
host.Open();
wcfHostId = wcf.generateId();
textBox5.Text = "" + wcfHostId;
button5.IsEnabled = false;
}
catch (Exception ex)
{
MessageBox.Show("Error = " + ex.Message);
}
编辑 所以基本上我所说的是当我自己托管一个WPF并连接一个新的客户端时,它正在擦除存储在服务中的所有变量。而我正在询问是因为我主持服务的方式?
答案 0 :(得分:1)
错误是我尝试发现WCF并且未添加发现端点的方式。
host.Description.Behaviors.Add(new ServiceDiscoveryBehavior());
host.AddServiceEndpoint(new UdpDiscoveryEndpoint());
需要添加到主机部分,最后的客户端代码是
var ep = "http://" + System.Net.Dns.GetHostName() + ":8732/DatabaseTransfer/Service1/";
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.None;
binding.SendTimeout = new System.TimeSpan(0, 1, 30);
ChannelFactory<IService1> wcfFactory = new ChannelFactory<IService1>(binding, new EndpointAddress(ep));
IService1 wcf = wcfFactory.CreateChannel();