Я пытаюсь реализовать модель сеанса за запрос в моем приложении WCF, и я прочитал бесчисленные документы по этой теме, но выглядит так: полная демонстрация этого. Я на самом деле наткнулся на несколько очень полезных статей, таких, как этот:реализация сеанса за запрос для WCF, NHibernate и Ninject
NHibernate's ISession, scoped for a single WCF-call
, но это все от старых времен, когда NHibernate и Ninject не имеют WCF конкретных реализаций, поэтому они добились того, что мне нужно, реализовав их заказчиками и т. д. Поскольку у Ninject и NHibernate есть поддержка WCF, я хочу, чтобы все было согласовано, используя их модули, но я оказался здесь ...
Основная настройка и поток должны быть примерно такими:
- Набор CurrentSessionContext для WcfOperationSessionContext в NHibernate конфигурации
- На старте сервиса, начните запрос, или в любой точке времени инициализации, открыть сеанс и привязать его к текущему контексту
- Хранилища получить текущий экземпляр сеанса с помощью SessionFactory.GetCurrentSession() метод
- Unbind и закрыть сессию в конце жизненного цикла
моей первая проблема в том, что я был не в состоянии получить доступ к жизненному циклу ФОС для обработки моих привязок. Немного покопавшись в код ninject, мне удалось подключить мои методы к событиям открытия/закрытия ServiceHost без значительных изменений, но тогда я не смог получить доступ к OperationContext, поскольку он является поточно-статическим.
Позже я попытался включить совместимость asp.net и использовать Application_BeginRequest и Application_EndRequest, и это выглядело очень многообещающим, но я не думаю, что это лучшее решение, поскольку я должен привязывать материал к экземпляру службы, а не HTTP-запрос ,
Кто-нибудь когда-либо достигал этого, используя встроенные библиотеки расширения wcf от ninject? Или любые идеи о том, что я могу делать неправильно?
Вы были правы, спасибо. Я читал о IDispatchMessageInspector, и я нашел эту реализацию: https://igloocoder.net:8443/svn/IglooCommons/trunk/src/IglooCoder.Commons/WcfNhibernate/ С некоторыми незначительными твиков, я был в состоянии сделать это Работа. – salimaabey
Ссылка сейчас, к сожалению, сломана. :( – Cornelius