服务器cstates开启还是关闭 虚拟化,【WCF】当服务端连接关闭后,但是客户端对象CommunicationState状态仍然是打开状态,为什么?(禁用可靠会话)...

你好,

是的,至少在我这边,非双工通信的模式下,在服务端关闭了情况下,重启服务端,客户端仍然可以正常调用服务端的服务。

我这里写一个例子,你可以参看下。

Server(Console application)

class Program

{

static void Main(string[] args)

{

using (ServiceHost sh=new ServiceHost(typeof(MyService)))

{

sh.Open();

Console.WriteLine("serivce is ready....");

Console.ReadLine();

sh.Close();

}

}

}

[ServiceContract]

public interface IService

{

[OperationContract]

string SayHello();

}

public class MyService : IService

{

public string SayHello()

{

return DateTime.Now.ToShortTimeString();

}

}

Appconfig(Server).

Client(Console application,invoke the service by adding service reference).

static void Main(string[] args)

{

ServiceReference2.ServiceClient client = new ServiceReference2.ServiceClient();

Console.WriteLine(client.SayHello());

Console.WriteLine(client.State);

Console.WriteLine("请关闭服务端");

Console.ReadLine();

try

{

Console.WriteLine(client.SayHello());

}

catch (Exception)

{

Console.WriteLine("调用失败");

}

Console.WriteLine("请重启服务端");

Console.ReadLine();

Console.WriteLine(client.SayHello());

Console.ReadLine();

}

客户端Appconfig(auto-generated),需要根据实际情况修改终结点为服务器地址,同一台机器上,Localhost就可以了。

bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference2.IService"

name="BasicHttpBinding_IService1" />

Abraham

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值