Intenta interpretar el código bien antes de aplicarlo a tu trabajo y si tdeseas aportar algo puedes dejarlo en los comentarios.
Solución:
Recibí este error al llamar a un servicio web. El problema también estaba relacionado con la seguridad del nivel de transporte. Podría llamar al servicio web a través de un proyecto de sitio web, pero al reutilizar el mismo código en un proyecto de prueba obtendría una WebException que contenía este mensaje. Agregar la siguiente línea antes de realizar la llamada resolvió el problema:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
Editar
System.Net.ServicePointManager.SecurityProtocol – Esta propiedad selecciona la versión del protocolo Capa de sockets seguros (SSL) o Seguridad de la capa de transporte (TLS) que se usará para las nuevas conexiones que usan el esquema del Protocolo seguro de transferencia de hipertexto (HTTPS); las conexiones existentes no se modifican.
creo que el SecurityProtocol
la configuración es importante durante el protocolo de enlace TLS al seleccionar la versión del protocolo.
Apretón de manos TLS – Este protocolo se utiliza para intercambiar toda la información requerida por ambos lados para el intercambio de los datos de la aplicación real por TLS.
ClienteHola – Un cliente envía un mensaje ClientHello especificando la versión más alta del protocolo TLS que admite…
ServidorHola – El servidor responde con un mensaje ServerHello, que contiene la versión del protocolo elegido… La versión del protocolo elegido debe ser la más alta que admitan tanto el cliente como el servidor. Por ejemplo, si el cliente admite la versión 1.1 de TLS y el servidor admite la versión 1.2, se debe seleccionar la versión 1.1; no se debe seleccionar la versión 1.2.
Este error generalmente significa que la máquina de destino se está ejecutando, pero el servicio al que intenta conectarse no está disponible. (O se detuvo, se bloqueó o está ocupado con otra solicitud).
En inglés: La conexión con el máquina (host/servidor/PC remoto en el que se ejecuta el servicio) pero como el servicio no estaba disponible en esa máquina, la máquina no sabía qué hacer con la solicitud.
Si la conexión a la máquina no estuviera disponible, vería un error diferente. Olvidé lo que es, pero está en la línea de “Servicio inalcanzable” o “No disponible”.
Editar – agregado
ES posible que esto esté causado por un firewall que bloquea el puerto, pero dado que usted dice que es intermitente (“a veces cuando el cliente intenta conectarse”), eso es muy poco probable. No incluí eso originalmente porque lo había descartado mentalmente antes de responder.
Mi escenario de caso específico fue que el servicio de aplicaciones de Azure tenía la versión mínima de TLS cambiada a 1.2
No sé si ese es el valor predeterminado a partir de ahora, pero volver a cambiarlo a 1.0 hizo que funcionara.
Puede acceder a la configuración dentro de “Configuración SSL”.
Recuerda algo, que puedes optar por la opción de parafrasear tu experiencia si acertaste tu duda a tiempo.