关于WCF的一些注意事项

1、服务代理,建立通道的方法,要注意及时关掉代理,因为服务设置有一个服务的最大连接数,超过这个连接数,则后面的连接将会等待,一直到超时,报错!!

2、在已有配置的基础上,利用代码更改终结点,如果重设了绑定,记得也要重设绑定的配置bindingConfiguration

3、利用TCP通信 ,用Svcutil.exe工具获取元数据时 契约内容为contract="IMetadataExchange" 服务绑定要打开 <serviceMetadata />

4、创建通道进,参数  endpointConfigurationName  是终结点名称 而不是

//
        // 摘要:
        //     使用指定的终结点配置名称初始化 System.ServiceModel.ChannelFactory<TChannel> 类的新实例。
        //
        // 参数:
        //   endpointConfigurationName:
        //     用于终结点的配置名称。
        //
        // 异常:
        //   System.ArgumentNullException:
        //     endpointConfigurationName 为 null。
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        public ChannelFactory(string endpointConfigurationName);

 5、微软推荐的最佳实践是抛弃using语句,转而利用try/catch(/finally)语句。它要求在try语句中调用Close()方法,而在catch中调用Abort()方法。Close()与Abort()方法的区别,即后者可以强制地关闭客户端,包括关闭客户端连接,释放资源。由于Close()方法可能会抛出CommunicationException和TimeoutException异常

原文地址:https://www.cnblogs.com/chcong/p/4321479.html