[转载]Asp.net MVC突然变慢,缓存消失的一种原因

[转载]Asp.net MVC突然变慢,缓存消失的一种原因 – slmk – 博客园.

今天使用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用户需要写权限


赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏