Я решил проблему в конце концов, после многих проб и ошибок с программной конфигурацией привязок.
Похоже, что-то в связывающем стеке, сгенерированном при создании NetTcpBinding
, позволяет нескольким NetTcpBinding
s совместно использовать порт. Проблема заключалась в том, что мне нужно было сделать пользовательскую привязку.
Решением стало создание пользовательской привязки на основе NetTcpBinding
. Например:
var lBinding = new NetTcpBinding()
{
SendTimeout = TimeSpan.FromMinutes(5),
ReceiveTimeout = TimeSpan.FromMinutes(5),
MaxConnections = 100,
ReliableSession = new OptionalReliableSession
{
Enabled = true,
Ordered = true,
InactivityTimeout = TimeSpan.FromMinutes(30)
},
Security = new NetTcpSecurity
{
Mode = SecurityMode.TransportWithMessageCredential,
Message = new MessageSecurityOverTcp { ClientCredentialType = MessageCredentialType.UserName }
},
MaxReceivedMessageSize = 524288
};
var lCustomBinding = new CustomBinding(lBinding);
// Edit the custom binding elements here
var lEndpoint = new ServiceEndpoint(lContract, lCustomBinding, new EndpointAddress(pServiceHost.BaseAddresses.First()));