WCF_客户端调用不使用Using

WCF的客户端不能在Using中使用。

Using的实现原理是:

try{
// 代码
}
finally{
obj.Dispose();
}

而Dispose方法内部调用的是Close方法。

对于WCF而言,其客户端的close方法是可以引发异常的,

close方法不是强制关闭。从而导致dispose方法可以在finally语句块中被不安全调用。抛出不可预知的异常,即便捕获异常,仍有可能一直保持着链接。


对于WCF服务的调用,一般使用try~ catch

try中执行服务调用,调用完成使用close关闭

catch中,执行Abort方法进行强制关闭。

static void Main(string[] args)
        {
            //使用终结点的配置名称初始化
            var factory = new ChannelFactory<IHelloService>("HelloService");
            //创建客户端
            var client = factory.CreateChannel();
            try
            {
                Console.WriteLine(client.SayHello());
                factory.Close();
            }
            catch (Exception)
            {
                factory.Abort();
                throw;
            }
            Console.ReadKey();
        }
因此wcf调用需要注意以上点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值