1

我是 WCF 的新成员,并试图找出满足我要求的最佳方法。我有一个使用以下代码托管 WCF 服务的应用程序:

Uri u1 = new
Uri("http://localhost:8732/Client1/WcfServiceLibrary1/Service1/"); Uri
u2 = new
Uri("http://localhost:8732/Client1/WcfServiceLibrary1/Service1/mex");
WSHttpBinding binding = new WSHttpBinding(); 

sHost = new ServiceHost(typeof(WcfServiceLibrary1.Service1), u1);
ServiceMetadataBehavior meta = new ServiceMetadataBehavior();
meta.HttpGetEnabled = true;
sHost.AddServiceEndpoint(typeof(WcfServiceLibrary1.IService1), binding, u1); 
sHost.Description.Behaviors.Add(meta); sHost.Open();

我可以在客户端应用程序上创建服务引用并在此服务上调用方法没有问题。使用下面的代码。

remoteService.Service1Client client = new remoteService.Service1Client(); 
remote.Text = client.GetData(3);

我也可以调用没有服务引用的方法。

EndpointAddress myEndpoint = new EndpointAddress("http://localhost:8732/Client1/WcfServiceLibrary1/Service1/");
WSHttpBinding myBinding = new WSHttpBinding();

ChannelFactory<IService1> ServiceConnectionFactory = new ChannelFactory<IService1>(myBinding, myEndpoint);
IService1 serviceConnection = ServiceConnectionFactory.CreateChannel();

如果我尝试在主机应用程序中执行相同的代码,则会出现以下错误。

00:01:00 后等待回复时请求通道超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。

应用程序如何使用和使用它当前托管的 WCF 服务?我需要在自己的线程中打开服务吗?

这个想法是让主机在客户端连接之前触发一些初始化。

4

0 回答 0