使用.net中的Web方法缓存不可用错误

时间:2014-01-08 04:46:38

标签: c# asp.net asmx

    [WebMethod(EnableSession = true)]
    public static void ProcessIT(string id)
    {
        string result = id;// "Welcome Mr. " + name + ". Your address is '" + address + "'.";

        string[] idsplit = result.Split('_');
        string Quesid = idsplit[1];
        Admin_NewPractice1 a = new Admin_NewPractice1();
        a.getid(Quesid);


        // return result;
    }

    public void getid(string Quesid)
    {
        try
        {
            //ds2.Tables.Add(dt);
            DataSet ds2 = new DataSet();          

            ds2 = (DataSet)Cache["mytable"];  // this line error comes 

            int m = Convert.ToInt32(Quesid);
            if (m < ds2.Tables[0].Rows.Count)
                fetchCommonData(ds2.Tables[0].Rows[m]);
        }
        catch (Exception ex)
        {
            throw ex;
        }

    }

1 个答案:

答案 0 :(得分:2)

我认为你是以错误的方式访问缓存。

请尝试

HttpContext.Current.Cache

HttpContext.Current.Cache将允许您访问范围为应用程序级别的缓存对象。

P.S: 很遗憾,您无法访问自定义类中的Cache对象。

会抛出类似

的错误

非静态字段,方法或属性

需要对象引用
'System.Web.Caching.Cache.Get(string)'

现在,如果class继承自System.Web.UI.Page,它不会产生编译时错误,而是产生运行时错误。

报告类似"Cache is not available"

的内容

所以其中一个解决方法是使用

 HttpContext.Current.Cache