Web Services 在Web服务调用之间将XML保留在内存中

gg0vcinb  于 2023-01-05  发布在  其他
关注(0)|答案(3)|浏览(160)

首先,我不想使用数据库或本地文件。
有没有可能将变量存储在内存中,这样就不必在每次调用Web服务时创建变量?

FullCompanyListCreateXML();

创建XDocument大约需要1分钟。那么有什么方法可以防止xml变量在Web服务调用完成后被删除呢?

[WebMethod(CacheDuration = 120)]
    public String FullCooperationListChunkGet(int part, int chunksize)
    {
        StringBuilder output_xml = new StringBuilder();
        XDocument xml = FullCompanyListCreateXML();
        IEnumerable<XElement> xml_query = xml.Root.Elements("Cooperation").Skip(part * chunksize).Take(chunksize);

        foreach (XElement x in xml_query)
        {
            output_xml.Append(x.ToString());
        }
        output_xml.Insert(0, "<Cooperations>");
        output_xml.Append("</Cooperations>");
        return output_xml.ToString().Zip();
    }

谢谢你,
亨里克

gzjq41n4

gzjq41n41#

两种方式:
1.您可以将全局.asax类添加到Web服务中,该类将在Web应用程序首次启动时创建,并且只要辅助进程将其保留在内存中,该类就会一直存在。
1.创建一个静态类来保存值
有关将全局.asax类添加到Web服务的主题,请参见blog entrythis post。可以在会话启动时创建内容,也可以在应用程序启动时通过重写Session_Start或Application_Start方法来创建内容

kyxcudwk

kyxcudwk2#

将xml写入实际指向MemoryStream的流。
然后使用诸如StreamReader之类的命令将其读回

y4ekin9u

y4ekin9u3#

您可以在ASP.NET中查看using the built-in caching mechanism,它相当容易使用。

相关问题