2014-01-19 207 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,健康日誌只是表明它已重新啓動......如果我有辦法找出導致重新啓動的實際異常,與取出代碼和重試的小時數等相比,發現問題會很容易。 ..

感謝您的幫助大家