Necesito crear un servicio WCF alojado en IIS, utiliza el transporte http y el estado de espera en la memoria del servidor. Si bien soy consciente de que los servicios con estado no son una buena idea, esta última restricción es necesaria para que el servicio funcione con un cliente heredado.Sesiones WCF con un wsHttpBinding y sin seguridad de Windows
Lo primero que pensé fue en la sesión de asp.net para almacenar los valores. Activé el modo de compatibilidad asp.net en mi servicio, lo que me dio acceso al HttpContext, pero los valores que se colocaron en el objeto de sesión no se conservaban en la memoria. Supongo que esto se debió a que el módulo http que maneja el estado de la sesión no estaba configurado correctamente, pero cuando busqué la respuesta en Google, me encontré con las sesiones de WCF y pensé que podría ser una mejor idea usarlas.
Sin embargo, las sesiones de WCF parecen lo que sub-documentan y colocan un extraño conjunto de requisitos previos en un servicio, y no he podido encontrar una configuración que satisfaga mis necesidades: debe alojarse en IIS, debe usar http o El transporte de https no puede responder con la autenticación de Windows porque el cliente y el servidor no formarán parte del mismo dominio. Estoy tratando de hacer esto usando el wsHttpBinding, había escuchado que las sesiones de WCF requerían seguridad o mensaje confiable, pero: - Usando el enlace estándar y cuando los servidores no son parte del mismo dominio falla con una "SecurityNegotiationException The el llamante no fue autenticado por la excepción de servicio. Esto es bastante lógico ya que usaba la seguridad de Windows.
Si desactivo seguridad completa falla con un “Contrato requiere de sesión, pero la unión 'wsHttpBinding' no es compatible o no está configurado correctamente para apoyarlo.”
Si mientras se mantiene seguridad deshabilitada Habilito el mensaje confiable Obtengo la excepción "Falló la validación de enlace porque WSHttpBinding no admite sesiones confiables sobre seguridad de transporte (HTTPS). La fábrica de canales o el host de servicio no se pudieron abrir. Utilice seguridad de los mensajes para mensajería segura y fiable a través de HTTP “.
He intentado habilitar la seguridad de nivel de transporte, pero esto no parece hacer ninguna diferencia con el error generado
¿Hay alguna configuración que podría funcionar para mí? ¿O debería volver al plan de usar sesiones de asp.net?
Encontró que la sesión de asp.net no funcionaba debido a que las cookies estaban deshabilitadas, tiene una versión funcional del código que usa sesiones asp.net. – Robert