2014-01-19 149 views
0

我有一个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的功能时

+0

您不能在空白的新mvc5网站上重现该问题吗? –

+0

尝试,到目前为止配置windsor,但仍然没有问题,现在将配置Nhibernate –

+0

当我添加一个自定义Nhibernate UserStore时,会发生,嗯 –

回答

1

2天后取出代码设法找到解决方案,

我们有一个的WebAPI DependencyResolver,而我读有一个不同的MVC和的WebAPI,他们应该在温莎单独配置,

我拿出定制DependencyResolver和中提琴:)

我希望有一个很好的方法来找出背景中发生的事情n MVC,健康日志只是表明它已重新启动......如果我有办法找出导致重新启动的实际异常,与取出代码和重试的小时数等相比,发现问题会很容易。 ..

感谢您的帮助大家