Мы используем ServiceHost уже многие годы для локальной связи между нашими приложениями.Мы открываем net.pipe: net.pipe://localhost/OurCompanyName/
Это работало хорошо, пока не появился патч для Windows 10 KB4480966 .
Это код, которыйоткрывает хост службы:
NetNamedPipeBinding binding = new NetNamedPipeBinding();
binding.MaxConnections = 100;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.Security.Mode = NetNamedPipeSecurityMode.Transport;
binding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;
//binding.ReceiveTimeout = new TimeSpan(0, 0, 10, 0);
this.serviceHost = new ServiceHost(typeof(LocalService), new Uri[] { new Uri(hostBaseAddress) });
this.serviceHost.AddServiceEndpoint(typeof(ILocalService), binding, localServiceEndPointAddress);
foreach (ServiceEndpoint ep in this.serviceHost.Description.Endpoints)
{
foreach (OperationDescription op in ep.Contract.Operations)
{
DataContractSerializerOperationBehavior dataContractBehavior =
op.Behaviors.Find<DataContractSerializerOperationBehavior>()
as DataContractSerializerOperationBehavior;
if (dataContractBehavior != null)
{
dataContractBehavior.MaxItemsInObjectGraph = int.MaxValue;
}
}
}
this.serviceHost.Open();
Поскольку упомянутый патч мы получаем это исключение:
Невозможно прослушать имя канала 'net.pipe: // localhost / OurCompanyName /', потому чтодругая конечная точка канала уже прослушивает это имя.