Sessões WCF com um wsHttpBinding e sem segurança do Windows

Preciso criar um serviço WCF hospedado no IIS, usar o transporte http e manter o estado na memória do servidor. Embora eu esteja ciente de que os serviços com estado não são uma boa ideia, essa última restrição é necessária para fazer o serviço funcionar com um cliente herdado.

Meu primeiro pensamento foi na sessão do asp.net para armazenar os valores. Ativei o modo de compatibilidade do asp.net no meu serviço, que me deu acesso ao HttpContext, mas os valores que foram colocados no objeto de sessão não estavam sendo persistidos na memória. Suponho que isso ocorreu porque o módulo http que lida com o estado da sessão não estava configurado corretamente, mas ao pesquisar a resposta que encontrei, sessões do WCF e pensei que seria uma idéia melhor usá-las.

No entanto, as sessões do WCF parecem sub documentar e colocar um conjunto estranho de pré-requisitos em um serviço, e não consegui encontrar uma configuração que atenda às minhas necessidades: deve estar hospedada no IIS, deve usar o transporte http ou https e pode responda na autenticação do Windows porque o cliente e o servidor não farão parte do mesmo domínio. Estou tentando fazer isso usando o wsHttpBinding, ouvi as sessões do WCF exigirem mensagens de segurança ou confiáveis, mas: - Usando a ligação padrão e quando os servidores não fazem parte do mesmo domínio, ocorre uma falha "SecurityNegotiationException The chamador não foi autenticada pelo serviço ”. Isso é bastante lógico, pois estava usando a segurança do Windows.

Se eu desabilitar a segurança concluída, ela falhará com um "Contrato requer Sessão, mas a Vinculação 'WSHttpBinding' não a suporta ou não está configurada corretamente para suportá-la."

Se, mantendo a segurança desativada, habilito a mensagem confiável, recebo a exceção “Falha na validação da ligação porque o WSHttpBinding não suporta sessões confiáveis sobre segurança de transporte (HTTPS). A fábrica de canais ou o host de serviço não pôde ser aberto. Use a segurança da mensagem para obter mensagens seguras e confiáveis por HTTP. ”

Tentei ativar a segurança no nível de transporte, mas isso não parece fazer diferença no erro gerado

Existe alguma configuração que possa funcionar para mim? Ou devo apenas voltar ao plano de usar as sessões do asp.net?

questionAnswers(2)

yourAnswerToTheQuestion