Tengo un problema al usar una llamada WCF desde un servicio de Windows a mi servicio WCF que se ejecuta en mi servidor web. Esta llamada ha estado funcionando durante varias semanas, pero luego dejó de funcionar de repente y no ha funcionado desde entonces.
La excepción que obtengo es:
Ocurrió un error general System.ServiceModel.CommunicationException: Ocurrió un error al realizar la solicitud HTTP
y luego dice
Esto podría deberse a que el certificado del servidor no está configurado correctamente con HTTP.SYS en el caso de HTTPS. Esto también podría deberse a una falta de coincidencia del enlace de seguridad entre el cliente y el servidor.
La seguridad que estoy usando en ambos extremos es wsHttpBinding, sin ningún tipo de cifrado. También está usando HTTP, no HTTPS, así que no estoy seguro de por qué se queja de HTTPS.
El resto de la pila de excepciones interna es:
SystemNet.WebException: la conexión subyacente se cerró: se produjo un error inesperado en un envío. ---> System.IO.IOException: No se pueden escribir datos en la conexión de transporte: se proporcionó un argumento no válido. ---> System.Net.Sockets.SocketException: se proporcionó un argumento no válido en System.Net.Sockets.Socket.MultipleSend (BufferOffsetSize [] buffers, SocketFlags socketFlags) en System.Net.Sockets.NetworkStream.MultipleWrite (BufferOffsetSize [] tampones)
También debo tener en cuenta que el punto en mi programa donde ocurre esto es en la línea "Ejecutar" de la llamada al servicio web, es decir, tan pronto como llamo al servicio web y le paso el objeto DataContract envuelto, explota.
Todo lo que hace este servicio es pasar una gran cantidad de XML (que se pasa como un objeto .NET a la llamada en el lado del cliente), con el que luego trabaja. Probablemente se estén transmitiendo entre 100 y 200 k de XML. Elevé los límites para los tamaños de datos en ambos extremos a más de 6 megas, pero eso no pareció ayudar.
¿Algunas ideas?
Más información sobre este tema:
Cuando duplicamos el entorno del cliente localmente, nos encontramos con que no podemos cargar grandes cantidades de XML a menos que hagamos los siguientes cambios: 1. En el servidor, establezca "maxRequestLength" en 100 MB (mucho más alto de lo que estamos enviando) 2. On el cliente, establecemos el valor de maxItemsInObjectGraph bajo la etiqueta dataContractSerializer en "2147483646".
Con estos cambios, nuestra instalación local se carga correctamente. Sin embargo, la instalación del cliente en su servidor aún falla. Lo interesante de notar es que una vez que hicimos el cambio de valor maxRequestLength en el servidor, nuestra instalación de prueba comenzó a arrojar un error relacionado específicamente con la configuración maxItemsInObjectGraph. Mientras que en el servidor de nuestro cliente, sigue ocurriendo el error "HTTP.sys" original.
Como señalé antes, no estamos usando SSL en absoluto, y hay otras 2 llamadas a servicios web que ejecutan y cargan XML de la misma manera. Sin embargo, dado que la llamada de servicio que no funciona transmite más datos, esto parece ser un problema de tamaño.
Sin embargo, si el problema que tiene el cliente es el mismo que tuvo nuestra instalación de prueba, no entiendo por qué el mensaje de error del cliente no estaría relacionado con el error ObjectGraph.
¿Es posible que solo obtengamos el error genérico de "parámetro no válido" "HTTP.sys" por cada posible error en el cliente (es decir, también está obteniendo el error objectGraph, pero simplemente no lo muestra?)