Я создаю (тонкое) клиент-серверное приложение с IIS в качестве сервера, используя Spring.Net в качестве основной технологии и тонкий клиент презентации WPF, соединяющий WCF с сервером (мы планируем веб-версия клиента в будущем) Когда я вхожу в систему, я создаю файл cookie сеанса http, чтобы иметь сеанс statefull, например веб-браузер, и я получаю лицензию на сервере. Когда я выйти из системы или если время сеанса IIS из (потому что клиент испорчены или пользователь не может выйти из системы правильно) мне нужно:IIS, Spring.Net WCF Http Управление сеансом
- релиз лицензии
- все бесплатно сеанс области видимости объектов с сервера RAM ,
Так мне нужно реализовать эти две вещи:
- Крючок к событию EndSession для обработки тайм-аут и врезается
- А процедура выхода из системы, которая обменивается данными на конец сессии в IIS после освобождая лицензия.
Я смотрел онлайн, но не нашел ясного примера о том, как сделать это двухстороннее управление сеансом. Если бы вы могли мне помочь и предоставить некоторые примеры конфигурации XML для IIS, Spring.N больш была бы оценен
FYI это является основным WCF и WEB конфигурация присутствует в моем файле web.config:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding1" maxReceivedMessageSize="31457280" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:30:00" sendTimeout="00:30:00">
<readerQuotas maxStringContentLength="31457280" maxArrayLength="31457280" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="wcfService" behaviorConfiguration="DefaultBehavior">
<endpoint address="" binding="basicHttpBinding" contract="Nemsys.SMF.Service.Tunnel.IWCFService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<sessionState timeout="60" />
<!-- needed by Spring.Net on IIS 7.0 -->
<httpHandlers>
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web" />
</httpHandlers>
<httpModules>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web" />
</httpModules>
</system.web>
<!-- needed by Spring.Net on IIS 7.0 -->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web" />
</modules>
<handlers>
<add name="SpringPageHandler" verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web" />
<add name="SpringContextMonitor" verb="*" path="ContextMonitor.ashx" type="Spring.Web.Support.ContextMonitor, Spring.Web" />
</handlers>
</system.webServer>
На самом деле мне удалось правильно освободить ресурсы на завершение сеанса выхода или Http, реализовав IDisposable в классе BLL, который управляет сеансом пользователя и вызывается перед удалением объекта. Единственное, что я не знаю, как это сделать: , когда пользователь нажимает кнопку выхода из системы после освобождения лицензии, мне нужно уничтожить http Session, позволяя IIS и Spring собирать и освобождать все ресурсы сеанса, которые они выделяли.
Имхо это не связано с весной. Если вы работаете в IIS и используете сеанс asp.net, вы можете создать global.asax и использовать 'protected void Session_End (Object sender, EventArgs e)' для очистки. – Andreas
Согласно вашему обновлению 'SessionState.Abandon();' ваш друг. http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx – Andreas