zoukankan      html  css  js  c++  java
  • 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用户需要写权限



  • 相关阅读:
    《求医不如求己》1,2,3全集下载(附人体穴位图)
    Lambda 表达式(C# 编程指南)
    .NET生成静态页面的方案总结
    匿名函数(C# 编程指南)
    NameValueCollection详解
    sql数据库压缩的全面解析
    人的一生
    抓取博客园列表数据
    相对论的时空观
    C#中搜索关键词高亮显示
  • 原文地址:https://www.cnblogs.com/slmk/p/2316936.html
Copyright © 2011-2022 走看看