首先,我不想使用数据库或本地文件。
有没有可能将变量存储在内存中,这样就不必在每次调用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();
}
谢谢你,
亨里克
3条答案
按热度按时间gzjq41n41#
两种方式:
1.您可以将全局.asax类添加到Web服务中,该类将在Web应用程序首次启动时创建,并且只要辅助进程将其保留在内存中,该类就会一直存在。
1.创建一个静态类来保存值
有关将全局.asax类添加到Web服务的主题,请参见blog entry或this post。可以在会话启动时创建内容,也可以在应用程序启动时通过重写Session_Start或Application_Start方法来创建内容
kyxcudwk2#
将xml写入实际指向MemoryStream的流。
然后使用诸如StreamReader之类的命令将其读回
y4ekin9u3#
您可以在ASP.NET中查看using the built-in caching mechanism,它相当容易使用。