2012-06-01 32 views
1

我有我的NHibernate會話管理HttpModule。是否可以僅爲MVC/Controller Action請求執行IHttpModule?

的問題是,當圖片被加載每個請求將調用我的HttpModule,並創建一個新的ISession,這是一種愚蠢的。

這將是不錯的配置HTTP模塊,使其只調用的MVC請求。否則,HttpModule不應該被圖像,css,js等請求調用。

有沒有辦法做到這一點?

回答

3

首先創建一個新的會話的開銷不是很大 - 它不一定連接到數據庫。

其次,您可以打開和使用過濾器關閉會話,而不是在MVC模塊的,如果你只是想對MVC請求

+0

你有在使用過濾器的例子嗎?是否有可能使用您的過濾方法,並在一個webrequest中涉及多個控制器? – Rookian

+0

如果你的意思是這樣的:http://weblogs.asp.net/fredriknormen/archive/2010/07/27/unitofwork-action-filter-for-asp-net-mvc-and-nhibernate.aspx那麼這個億韓元對我沒有幫助,因爲我有在一個Web請求中執行多個動作的情況。所以第二項行動將使用已處理的會話。如果我錯了,或者有其他方式讓我知道。 – Rookian

2

要回答這個問題,使用正則表達式來看看Request.Url到匹配您不想處理的文件擴展名,並在未經處理的情況下返回。

+0

這聽起來不錯:)但我想我可以在IIS/web.config中配置一個HttpModule。 – Rookian

+0

模塊不允許您在web.config中定義匹配模式。一個IHttpHandler允許你定義一個模式,也許這會在你的情況下更好地工作? –

+0

我想補充的唯一的事情是,你應該看看路徑,而不是URL,因爲你可能會不喜歡http://mydomain.com/image/get?format=.jpg或類似的東西創造的東西會話,或者你可能會得到一個非常複雜的正則表達式 – Shagglez

相關問題