【发布时间】:2017-03-21 07:20:23
【问题描述】:
我正在尝试在 C# 中为 XSL 实现缓存。我已经实现了以下代码
Xsl2Processor xsl = new Xsl2Processor();
if (HttpContext.Current.Cache.Get("xsl_" + xslPath) == null)
{
xsl.Load(xslPath);
HttpContext.Current.Cache.Insert("xsl_" + xslPath, xsl, new System.Web.Caching.CacheDependency(xslPath));
}
else
{
xsl = (Xsl2Processor)HttpContext.Current.Cache.Get("xsl_" + xslPath);
}
return xsl;
单个用户 ID 可以正常工作。当我同时尝试两个用户 ID 时(负载测试)。用户被切换的数据。为什么会发生这种情况以及解决方案是什么?
【问题讨论】:
-
您确定这是导致问题的代码吗?例如,显示的代码示例不包含任何“UserID”。此外,如果数据正在切换,那么这很可能是 XML 的问题,而不是 XSLT 的问题。谢谢。
-
没有缓存的代码运行良好,缓存导致问题。当同时为不同的用户运行时,值在输出 Xml 之间切换。
-
什么是
Xsl2Processor?那是你自己的课吗? -
嗨 Martin..Xsl2Processor 是 Saxon 提供的类。
-
不,这不正确,它不是由 Saxon(或 Saxonica)提供的。它是由第三方开发的项目codeproject.com/Articles/24766/XSL-and-XQuery-in-NET 的一部分。