dependency injection - Cannot get a working Unity Session Lifetime Manager, ASP.NET MVC5 -


i've read , googled on this, can't seem work. created custom lifetimemanager unity in mvc5 application based on these posts:

here sessionlifetimemanager

public class sessionlifetimemanager : lifetimemanager {     private string key = guid.newguid().tostring();      public override object getvalue()     {         return httpcontext.current.session[key];     }      public override void removevalue()     {         httpcontext.current.session.remove(key);     }      public override void setvalue(object newvalue)     {         httpcontext.current.session[key] = newvalue;     } } 

i have few types i'm playing with, here relevant registrations in unityconfig.cs:

container.registertype<iepisession, episession>(new sessionlifetimemanager(),      new injectionconstructor(config.appserveruri, config.pathtosysconfig)); container.registertype<ireportrepository, epicorreportrepository>(new transientlifetimemanager());  dependencyresolver.setresolver(new unitydependencyresolver(container)); 

note epicorreportrepository has dependency on iepisession via constructor injection.

public class epicorreportrepository : ireportrepository {     private iepisession session;      // di constructor     public epicorreportrepository(iepisession session) {         this.session = session;     } // ... } 

my problem: after first user / session connects application, every new user / session after seems still using episession object , credentials first user had create/injected him. seems common pattern used on interwebs, i'm wondering missing.

how did test iepisession same in different sessions?

try open application different browsers. if open several tabs in same browser same session used.

i checked code , works me. there 1 difference in setresolver():

dependencyresolver.setresolver(     type => container.resolve(type),     types => container.resolveall(types)); 

the full registration code following:

public class mvcapplication : system.web.httpapplication {     protected void application_start()     {         ...         var container = new unitycontainer();         container.registertype<iepisession, episession>(             new sessionlifetimemanager(),             new injectionconstructor("config.appserveruri", "config.pathtosysconfig"));         container.registertype<ireportrepository, epicorreportrepository>(new transientlifetimemanager());          dependencyresolver.setresolver(             type => container.resolve(type),             types => container.resolveall(types));     } } 

Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - .htaccess mod_rewrite for dynamic url which has domain names -

Website Login Issue developed in magento -