У меня есть служба WCF, которая использует настраиваемый UsernamePasswordValidator. Валидатор должен получить доступ к контексту моей сущности.
Я хотел бы создать один ObjectContext для всего вызова службы, а затем уничтожить/удалить его в конце вызова. Итак, я создал статический класс синглтона, который обеспечивал эту функциональность, однако сейчас происходит то, что если два вызова службы происходят одновременно, один из вызовов удаляет синглтон.
Я либо сохраняю локальную ссылку на ObjectContext, и в этом случае второй сервис, который его использует, видит его как удаленный и выдает и выдает ошибку, или я помещаю свойство-оболочку вокруг класса Singleton везде, где мне это нужно, и тогда все мои изменения выбрасываются прочь, потому что я получаю новый экземпляр объекта, если он был удален другим вызовом.
Итак, в основном мой вопрос заключается в том, как создать экземпляр ObjectContext для каждого вызова службы?
ПРИМЕЧАНИЕ. Экземпляр должен быть доступен как в сервисном коде, так и в пользовательском коде UsernamePasswordValidator.
Я не могу просто сделать это в конструкторе или использовать оператор using, потому что тогда пользовательский UsernamePasswordValidator не имеет к нему доступа. Есть ли способ иметь статический класс для каждого вызова? Это кажется невозможным, но как обойти это? Должен ли я кэшировать объект в сеансе?
Мой сервис размещен в IIS.
ОБНОВЛЕНИЕ:
Итак, я прибил это к сохранению состояния в InstanceContext с помощью объекта IExtension. Но как мне получить доступ к текущему InstanceContext в UsernamePasswordValidator?