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

C# 在Web服务调用之间将XML保留在内存中,c#,web-services,C#,Web Services,首先,我不想使用数据库或本地文件 是否可以将变量存储在内存中,这样就不必在每次调用webservice时都创建它们?问题是 FullCompanyListCreateXML(); 创建XDocument大约需要1分钟。那么,有什么方法可以防止在webservice调用完成后删除xml变量呢 [WebMethod(CacheDuration = 120)] public String FullCooperationListChunkGet(int part, int chunks

首先,我不想使用数据库或本地文件

是否可以将变量存储在内存中,这样就不必在每次调用webservice时都创建它们?问题是

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();
    }
[WebMethod(CacheDuration=120)]
公共字符串FullCollaborationListChunkGet(int-part,int-chunksize)
{
StringBuilder输出_xml=new StringBuilder();
XDocument xml=FullCompanyListCreateXML();
IEnumerable xml_query=xml.Root.Elements(“协作”).Skip(part*chunksize)。Take(chunksize);
foreach(xml_查询中的XElement x)
{
output_xml.Append(x.ToString());
}
输出xml.Insert(0,“”);
输出_xml.Append(“”);
返回输出_xml.ToString().Zip();
}
谢谢,

Henrik将xml写入一个实际指向


然后使用诸如a之类的内容将其读回,并将xml写入实际指向a的流中

然后用两种方式(如a)读回:

1) 您可以将global.asax类添加到web服务中,该类将在web应用程序首次启动时创建,并且只要工作进程将其保留在内存中,该类就会一直存在。覆盖

2) 创建一个静态类来保存这些值

请参阅本文,或参阅将global.asax类添加到web服务的主题。您可以在会话启动时或应用程序启动时通过覆盖会话启动或应用程序启动方法创建内容

2种方式:

1) 您可以将global.asax类添加到web服务中,该类将在web应用程序首次启动时创建,并且只要工作进程将其保留在内存中,该类就会一直存在。覆盖

2) 创建一个静态类来保存这些值

请参阅本文,或参阅将global.asax类添加到web服务的主题。您可以在会话启动时创建内容,也可以在应用程序启动时通过覆盖会话启动或应用程序启动方法来创建内容,您可以在ASP.NET中查看这些方法。它很容易使用。

您可以在ASP.NET中查看。它很容易使用