Asp.net MVC突然變慢,緩存消失的一種原因


今天使用Sqlite數據庫時,在插入數據后,網站變慢。仔細檢查代碼,沒有發現異常,只有一點:緩存莫名消失。緩存策略沒有設置依賴性,百思不得其解:數據庫改變,導致緩存消失?起初以為是sqlite的問題,Google后沒有答案!

於是想寫一個測試程序,寫到一半,發現了問題:自己為了圖省事將Sqlite數據庫放在了bin目錄下。現在看來bin是asp.net進程重點監視目錄,只要此目錄中的文件改變了,就會導致應用程序重新編譯,不但緩存丟失,還導致asp.net程序重新預熱,訪問自然變慢!由此看來asp.net MVC還是動態編譯的。測試環境是asp.net mvc2.0+3.5框架+iis6.0+win2003。

解決方法也很簡單:將sqlite數據庫文件放到App_Data文件夾下,其實這里才是放我們數據文件的地方,例如一些txt文件,都應放於此。

其實動態編譯對於動態發布才有意義吧,我們的Asp.net mvc都是一次性發布的,動態編譯好像沒有必要,可是又找不到預編譯的發布選項,望牛人指點!

另附Asp.net中使用Sqlite數據庫的注意事項:

1、連接字符串需要全路徑:

 ConnectionString = "Data Source=" + HttpRuntime.AppDomainAppPath +
"\\App_Data\\test.db3;Pooling=true;FailIfMissing=false";

2、“Unable to open database file”錯誤:

此錯誤是由於數據庫路徑不對,更確切地說是:上邊的連接字符串的全路徑中有一個目錄不存在,才會提示該錯誤,因為FailIfMissing=false如果數據庫文件不存在,會自動新建一個同名的數據庫文件。這種連接字符串會導致另一個錯誤的出現:“XX表不存在”。看來還是改為true好用。

3、“數據庫文件只讀”錯誤:

該錯誤是由於沒有對數據庫文件所在目錄的寫權限,添加此用戶的讀寫權限

 

var user= System.Security.Principal.WindowsIdentity.GetCurrent().Name //此windows用戶需要寫權限




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM