我有一个MVC5项目,温莎城堡的IoC + NHibernate的组合有时多次,Asp.net MVC5发生的Application_Start每一个请求 - 每个请求
现在有没有那么多在那里,但是当我调试功能的Application_Start在我的Global.asax我可以看到,被击中的每个请求,
有时每隔几十倍的一个请求......
我读到的重新编译即可发生,如果文件在IIS文件夹被改变 - 但我使用IIS Express - 并且不知道该文件夹在哪里。
我们曾经有一个密度纤维板+的LocalDB我们的测试环境,所以我想这可能是莫名其妙的问题,所以我现在连接到SQLEXPRESS,我就拿密度纤维板从溶液中,
但仍然是同样的问题...
什么可能会导致此行为?以及我如何进一步调查为什么会发生?
*我检查 - 这似乎重定向到不同的动作,即使它重新加载MVC - 登录后的Application_Start发生3次...
编辑1:
开始增加了一切新项目发现什么导致的问题,该问题出现时,我加入了自定义的NHibernate UserStore我们提出新MVC5身份使用
public class NhUserStore : IUserStore<User>, IUserPasswordStore<User>
{
public ISession _session;
public NhUserStore(ISession session)
{
_session = session;
}
public Task CreateAsync(User user)
{
return Task.FromResult(_session.Save(user));
}
...
}
我认为这是关系到会议在温莎配置为LifeStyle.Per事实WebRequest类和NhUserStore取决于会议,但我不知道为什么
这些都是我们的温莎安装:
public class ControllersInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly()
.BasedOn<Controller>()
.LifestyleTransient());
container.Register(Classes.FromThisAssembly()
.BasedOn<ApiController>()
.LifestyleScoped());
}
}
我MVC5的模板注意到有:
public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
{
}
所以我用NH的会话像这样:
public AccountController(ISession session)
: this(new UserManager<User>(new NhUserStore(session)))
{
}
public AccountController(UserManager<User> userManager)
{
UserManager = userManager;
}
我改变了UserMan的创建愤怒现在,它固定了一半,现在MVC重新启动只有当使用UserStore,而不是每个请求,仍然多次使用UserStore的功能时
您不能在空白的新mvc5网站上重现该问题吗? –
尝试,到目前为止配置windsor,但仍然没有问题,现在将配置Nhibernate –
当我添加一个自定义Nhibernate UserStore时,会发生,嗯 –