当我从SQL Server读取时,缓存清单停止工作

时间:2013-06-11 04:24:17

标签: asp.net sql-server html5 cache-manifest

我正在使用缓存清单来使Web应用程序可以脱机访问。一切正常,直到我添加连接到SQL Server数据库的功能(使用存储在代码后面的连接字符串而不是web.config)。该页面是一个简单的空白测试页面,没有图像或其他资源。不知何故,数据库连接正在停止工作 - 以前它曾经工作过(即使是数据库连接),然后就停止了......

CODE(仅限page_load ...页面中没有其他内容)页面名为'tryit2.aspx'

protected void Page_Load(object sender, EventArgs e)
    {
            //open connections
            oConn = new SqlConnection();
            oConn.ConnectionString = _connectionString;
            oConn.Open();

            ////----FETCH SUBCAT PRODS FROM DB
            _currentDT = new DataTable();

            SqlDataReader sqlDR2 = this.executeSQLcommand_returnDataReader(oConn, loadMenu, true, null);
            _currentDT = new DataTable();
            _currentDT.Load(sqlDR2);
            sqlDR2.Dispose();

            //dynamically create the cache manifest file
            string appPath = Request.PhysicalApplicationPath;
            string filePath = appPath + "cache.manifest";
            StreamWriter w;
            w = File.CreateText(filePath);

            w.WriteLine("CACHE MANIFEST");
            w.WriteLine("CACHE:");

            w.WriteLine("tryit2.aspx");

            w.WriteLine("NETWORK:");
            w.WriteLine("*");

            //closing the streamwriter
            w.Flush();
            w.Close();
}

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

如果您像这样动态生成清单,那么如果文件实际上没有更改(see step 7),则需要确保使用304 Not Modified进行响应,否则(在步骤24)当浏览器发出清单文件的第二个请求以确认在实例化缓存时它尚未更新时,将重新下载整个缓存。在清单URL上设置到期标头也很重要,这样浏览器就不会缓存清单本身。