コード例 #1
0
ファイル: ProxyFactory.cs プロジェクト: eraj2587/NSB7
        private static IChannelFactory <TService> CreateChannelFactory <TService>(Uri uri) where TService : class
        {
            var binding      = (NetTcpBinding)CreateDefaultEndpointBinding(uri);
            var securityMode = ServiceSecurityMode.GetSecurityModeFromConfig();

            binding.SetBindingSecurity(securityMode);
            binding.MaxBufferSize          = 2147483647;
            binding.MaxReceivedMessageSize = 65536;
            binding.CloseTimeout           = new TimeSpan(0, 5, 0);
            //updated service RecieveTimeout to 3 minutes instead of default
            binding.ReceiveTimeout = TimeSpan.FromMinutes(3);
#if DEBUG
            binding.SendTimeout    = TimeSpan.MaxValue;
            binding.OpenTimeout    = TimeSpan.MaxValue;
            binding.ReceiveTimeout = TimeSpan.MaxValue;
            binding.CloseTimeout   = TimeSpan.MaxValue;
#endif

            binding.EnableTransactionFlowAndReliableMessaging();
            var serviceUriBuilder = new UriBuilder(uri);
            serviceUriBuilder.Path = string.Format("{0}/{1}", serviceUriBuilder.Path, securityMode.PathExtension);
            var address = CreateEndpointAddress(serviceUriBuilder.Uri, null);

            var cf = new ChannelFactory <TService>(binding, address);
            cf.AddGenericResolver();
            cf.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;

            var certMode = securityMode as X509CertificateServiceSecurityMode;
            if (certMode != null)
            {
                cf.Credentials.ClientCertificate.Certificate = certMode.TransportCertificate;
            }
            return(cf);
        }