Base solution for your next web application
Open Closed

Inproc session #1451


User avatar
0
genr created

For my application I created a MailService class in the Application project, the service creates a connection to a IMAP server, to get emails. In order to prevent constant reconnecting with each request, I need to save the object who is responsible for the connection in Session state. The object is not serializable and needs to be retrieved as soon as possble. Therefore I want to use Inproc session.

According to documentation the following should work:

class MailService : MyAppServiceBase, IMailService
    {
        private MailKitHelper _mailKitHelper;

        public MailService()
        {
            // try to get MailKitHelper object via inproc session state
            if (HttpContext.Current.Session != null)
                _mailKitHelper = (MailKitHelper)HttpContext.Current.Session["MailKitHelper"];

However it doesn't, the Session object is null. What's the best way to solve this problem, any help would be greatly appricated?


2 Answer(s)
  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi,

    Why don't you make your service singleton, just derive it from ISingletonDependecy. In this way, it will be created only once and MailKitHelper will be created for MailService one time.

  • User Avatar
    0
    genr created

    Thanks for your reply,

    I need a MailKitHelper object for each tenant, so making singleton would not be a good choice.

    Update: I basically solved it now by using MemoryCache