首先,我不想使用数据库或本地文件。
是否可以将变量存储在内存中,以便每次调用Web服务时都不必创建变量?问题是
FullCompanyListCreateXML();
创建XDocument大约需要1分钟。那么有什么办法可以防止在webservice调用完成后删除xml变量?
[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();
}
谢谢,
亨利克
答案 0 :(得分:1)
将xml写入实际指向MemoryStream的流。
然后使用诸如StreamReader
之类的内容进行回读答案 1 :(得分:1)
2种方式:
1)您可以将一个global.asax类添加到Web服务中,该Web服务将在Web应用程序首次启动时创建,并且只要工作进程将其保留在内存中,它就会持续存在。覆盖
2)创建一个静态类来保存值
有关将global.asax类添加到Web服务的主题,请参阅此blog entry或this post。您可以在会话启动时创建内容,也可以通过覆盖Session_Start或Application_Start方法来启动应用程序
答案 2 :(得分:1)
您可以在ASP.NET中查看using the built-in caching mechanism。它很容易使用。