вот настройка для проекта.
У меня есть служба WCF, которая размещена на привязке net.tcp в буферизованном режиме и включена ReliableSession.
Привязка настроена для использования защиты TransportWithMessageCredential. Сертификат является самозаверяющим сертификатом, который я идентифицирую с помощью отпечатка.
UserNameValidator - это пользовательский валидатор, который при тестировании никогда не выходит из строя (раньше он не был неудачным, но я устранил неопределенность)
Служба и клиент находятся на одном компьютере, и у них обоих есть доступ к сертификату.
Проблема:
Я получаю исключение Socket Aborted при попытке использовать метод из службы. Вот код, который я использую, чтобы открыть соединение с сервисом. MonitorServiceCallbacks содержит только пустые методы для выполнения требований интерфейса.
_instanceContext = new InstanceContext(new MonitorServiceCallbacks());
_serviceInterface = new MonitorCallbackServiceClient(_instanceContext);
_serviceInterface.ClientCredentials.UserName.UserName = Environment.MachineName;
_serviceInterface.ClientCredentials.UserName.Password = "myPassword";
_serviceInterface.Open();
Это, кажется, работает нормально, поскольку переменная _serviceInterface.State установлена в State.Opened, вызывается пользовательский валидатор и возвращается без исключения.
Однако, если я пытаюсь вызвать метод с использованием прокси-сервера _serviceInterface, в сервисе не запускается код, на который я могу взломать, и tracelog не выявляет ошибок, кроме исключения SocketAborted, которое возникает через 1 минуту после получения того, что кажется сообщение для метода.
InnerException отсутствует.
Я пытался решить проблему, но в результатах говорится "просто отключите безопасность, и она будет работать нормально". К сожалению, это невозможно сделать.
Я очень смущен этой проблемой, и любая помощь будет принята с благодарностью.
Большое спасибо,
Ehrys