Мне нужно создать службу WCF, размещенную в IIS, используя http-транспорт и состояние хранения в памяти сервера. Хотя я знаю, что службы с сохранением состояния не являются хорошей идеей, этот последний ограничитель необходим, чтобы заставить службу работать с устаревшим клиентом.WCF-сессии с wsHttpBinding и без безопасности Windows
Моя первая мысль заключалась в сеансе asp.net для хранения значений. Я активировал режим совместимости asp.net в своей службе, что дало мне доступ к HttpContext, но значения, которые были помещены в объект сеанса, не сохранялись в памяти. Я предполагаю, что это связано с тем, что модуль http, который обрабатывает состояние сеанса, был неправильно настроен, но когда я искал ответ, я столкнулся с сессиями WCF и подумал, что лучше использовать их.
Однако сеансы WCF показывают, что задокументировано и помещают странный набор предварительных условий в службу, и я не смог найти конфигурацию, которая соответствует моим потребностям: должна быть размещена в IIS, должна использовать http или https и не может отвечать на проверку подлинности Windows, поскольку клиент и сервер не будут частью одного домена. Я пытаюсь добиться этого, используя wsHttpBinding, я слышал, что сессии WCF требовали либо сообщения безопасности, либо надежного сообщения, но: - Используя стандартную привязку и когда серверы не являются частью одного и того же домена, сбой «SecurityNegotiationException» вызывающий абонент не был аутентифицирован «исключением» службы. Это довольно логично, поскольку он использует защиту Windows.
Если отключить безопасность завершения он не с «Договор требует сеанса, однако привязка„WSHttpBinding“не поддерживает или не настроен должным образом, чтобы поддержать его.»
Если при сохранении защита отключена. Я включаю надежное сообщение. Я получаю исключение. Ошибка проверки привязки, потому что WSHttpBinding не поддерживает надежные сеансы по безопасности транспорта (HTTPS). Не удалось открыть фабрику каналов или узел службы. Использование безопасности сообщений для безопасного надежного обмена сообщениями по протоколу HTTP «.
Я пытался включать защиту транспортного уровня, но это, кажется, не имеет никакого значения, к ошибке генерируется
Есть ли конфигурация, может работать для меня? Или я должен просто вернуться к плану использования сессий asp.net?
Обнаружено, что сеанс asp.net не работает, поскольку файлы cookie отключены, имеют рабочую версию кода с использованием сеансов asp.net. – Robert