public static System.ServiceModel.EndpointAddress GetEndpointAddress(this IClientProxySettings settings) { if (!settings.Enabled) { return(null); } var endpointIdentity = new System.ServiceModel.DnsEndpointIdentity(settings.DnsIdentity); var endpointAddress = new System.ServiceModel.EndpointAddress(new Uri(settings.Address), endpointIdentity); return(endpointAddress); }
public EmployeeClientProxyFactory(IClientProxySettings proxySettings) { _proxySettings = proxySettings; _channelFactory = new Lazy <System.ServiceModel.ChannelFactory <IEmployeeService> >(() => { var binding = _proxySettings.GetNetTcpBinding(); var endpointAddress = _proxySettings.GetEndpointAddress(); var factory = new System.ServiceModel.ChannelFactory <IEmployeeService>(binding, endpointAddress); factory.Endpoint.TrySetMaxItemsInObjectGraph(_proxySettings); return(factory); }); }
public static void TrySetMaxItemsInObjectGraph(this System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, IClientProxySettings settings) { if (!settings.Enabled) { return; } if (settings.MaxItemsInObjectGraph.HasValue) { var serializer = serviceEndpoint.Contract.Operations.OfType <System.ServiceModel.Description.DataContractSerializerOperationBehavior>().FirstOrDefault(); if (serializer != null) { serializer.MaxItemsInObjectGraph = settings.MaxItemsInObjectGraph.Value; } } }
public static System.ServiceModel.Channels.Binding GetNetTcpBinding(this IClientProxySettings settings) //INetTcpClientProxySettings settings) { if (!settings.Enabled) { return(null); } var binding = Enum.TryParse(settings.SecurityMode, true, out System.ServiceModel.SecurityMode securityMode) ? new System.ServiceModel.NetTcpBinding(securityMode) : new System.ServiceModel.NetTcpBinding(); if (settings.CloseTimeout.HasValue) { binding.CloseTimeout = settings.CloseTimeout.Value; } if (settings.OpenTimeout.HasValue) { binding.OpenTimeout = settings.OpenTimeout.Value; } if (settings.ReceiveTimeout.HasValue) { binding.ReceiveTimeout = settings.ReceiveTimeout.Value; } if (settings.SendTimeout.HasValue) { binding.SendTimeout = settings.SendTimeout.Value; } if (settings.MaxBufferPoolSize.HasValue) { binding.MaxBufferPoolSize = settings.MaxBufferPoolSize.Value; } if (settings.MaxBufferSize.HasValue) { binding.MaxBufferSize = settings.MaxBufferSize.Value; } if (settings.MaxReceivedMessageSize.HasValue) { binding.MaxReceivedMessageSize = settings.MaxReceivedMessageSize.Value; } //if (settings.SecurityMode.HasValue) // binding.Security = new System.ServiceModel.NetTcpSecurity { Mode = settings.SecurityMode.Value }; if (settings.TransferMode.HasValue) { binding.TransferMode = settings.TransferMode.Value; } // reader quotas settings if (settings.MaxArrayLength.HasValue) { binding.ReaderQuotas.MaxArrayLength = settings.MaxArrayLength.Value; } if (settings.MaxBytesPerRead.HasValue) { binding.ReaderQuotas.MaxBytesPerRead = settings.MaxBytesPerRead.Value; } if (settings.MaxDepth.HasValue) { binding.ReaderQuotas.MaxDepth = settings.MaxDepth.Value; } if (settings.MaxNameTableCharCount.HasValue) { binding.ReaderQuotas.MaxNameTableCharCount = settings.MaxNameTableCharCount.Value; } if (settings.MaxStringContentLength.HasValue) { binding.ReaderQuotas.MaxStringContentLength = settings.MaxStringContentLength.Value; } return(binding); }
public static System.ServiceModel.ClientBase <TChannel> TrySetMaxItemsInObjectGraph <TChannel>(this System.ServiceModel.ClientBase <TChannel> client, IClientProxySettings settings) where TChannel : class { if (!settings.Enabled) { return(client); } if (settings.MaxItemsInObjectGraph.HasValue) { client.Endpoint.TrySetMaxItemsInObjectGraph(settings); } return(client); }