public override Binding CreateBinding() { Binding bin; var tcpBin = new NetTcpBinding(); tcpBin.ReliableSession.InactivityTimeout = InactivityTimeout; tcpBin.MaxBufferPoolSize = MaxBufferPoolSize; tcpBin.MaxBufferSize = MaxBufferSize; tcpBin.MaxConnections = MaxConnections; tcpBin.MaxReceivedMessageSize = MaxReceivedMessageSize; tcpBin.ReaderQuotas.MaxBytesPerRead = ReaderQuotas_MaxBytesPerRead; tcpBin.ReaderQuotas.MaxStringContentLength = ReaderQuotas_MaxStringContentLength; tcpBin.ReaderQuotas.MaxArrayLength = ReaderQuotas_MaxArrayLength; tcpBin.Security.Mode = SecurityMode; tcpBin.Security.Message.ClientCredentialType = ClientCredentialType; tcpBin.TransferMode = TransferMode; ConfigureTcpBindingAction?.Invoke(tcpBin); bin = tcpBin; // Check if ClockSkew has default values (300 segundos) if (LocalClientMaxClockSkew != TimeSpan.FromMinutes(5) || LocalServiceMaxClockSkew != TimeSpan.FromMinutes(5)) { CustomBinding cusBin = new CustomBinding(tcpBin); SymmetricSecurityBindingElement symetricSecurity = cusBin.Elements.Find <SymmetricSecurityBindingElement>(); if (symetricSecurity != null) { //symetricSecurity.LocalServiceSettings.DetectReplays = false; //symetricSecurity.LocalClientSettings.DetectReplays = false; symetricSecurity.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew; symetricSecurity.LocalClientSettings.MaxClockSkew = LocalClientMaxClockSkew; if (symetricSecurity.ProtectionTokenParameters is SecureConversationSecurityTokenParameters tokens) { //tokens.BootstrapSecurityBindingElement.LocalClientSettings.DetectReplays = false; //tokens.BootstrapSecurityBindingElement.LocalServiceSettings.DetectReplays = false; tokens.BootstrapSecurityBindingElement.LocalClientSettings.MaxClockSkew = LocalClientMaxClockSkew; tokens.BootstrapSecurityBindingElement.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew; } } AsymmetricSecurityBindingElement asymetricSecurity = cusBin.Elements.Find <AsymmetricSecurityBindingElement>(); if (asymetricSecurity != null) { asymetricSecurity.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew; asymetricSecurity.LocalClientSettings.MaxClockSkew = LocalClientMaxClockSkew; if (asymetricSecurity.InitiatorTokenParameters is SecureConversationSecurityTokenParameters tokens) { tokens.BootstrapSecurityBindingElement.LocalClientSettings.MaxClockSkew = LocalClientMaxClockSkew; tokens.BootstrapSecurityBindingElement.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew; } } bin = cusBin; } bin.CloseTimeout = CloseTimeout; bin.OpenTimeout = OpenTimeout; bin.ReceiveTimeout = ReceiveTimeout; bin.SendTimeout = SendTimeout; return(bin); }
public override Binding CreateBinding() { Binding bin; var tcpBin = new NetTcpBinding(); tcpBin.ReliableSession.InactivityTimeout = InactivityTimeout; tcpBin.MaxBufferPoolSize = MaxBufferPoolSize; tcpBin.MaxBufferSize = MaxBufferSize; tcpBin.MaxConnections = MaxConnections; tcpBin.MaxReceivedMessageSize = MaxReceivedMessageSize; tcpBin.ReaderQuotas.MaxBytesPerRead = ReaderQuotas_MaxBytesPerRead; tcpBin.ReaderQuotas.MaxStringContentLength = ReaderQuotas_MaxStringContentLength; tcpBin.ReaderQuotas.MaxArrayLength = ReaderQuotas_MaxArrayLength; tcpBin.Security.Mode = SecurityMode; tcpBin.Security.Message.ClientCredentialType = ClientCredentialType; tcpBin.TransferMode = TransferMode; ConfigureTcpBindingAction?.Invoke(tcpBin); bin = tcpBin; // Check if ClockSkew has default values (300 segundos) if (LocalClientMaxClockSkew != TimeSpan.FromMinutes(5) || LocalServiceMaxClockSkew != TimeSpan.FromMinutes(5)) { CustomBinding cusBin = new CustomBinding(tcpBin); SecurityBindingElement security = cusBin.Elements.Find <SecurityBindingElement>(); if (security != null) { security.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew; security.LocalClientSettings.MaxClockSkew = LocalClientMaxClockSkew; } bin = cusBin; } bin.CloseTimeout = CloseTimeout; bin.OpenTimeout = OpenTimeout; bin.ReceiveTimeout = ReceiveTimeout; bin.SendTimeout = SendTimeout; return(bin); }