来自主机应用程序的WCF调用函数

时间:2013-03-07 05:34:33

标签: wcf wcf-hosting

我对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服务?我是否需要在自己的线程中打开服务?

主意是在客户端连接之前触发一些初始化。

0 个答案:

没有答案