我有一个在 .Net 4.6 下运行的 WinForms 应用程序 (x64)。我正在XslCompiledTransform
使用 XSLT 文件来操作一些 XML 文件。
XSLT 转换对许多 XML 文件并行完成,如下所示:
Parallel.ForEach(totalBusWorkingFolderFileItem, po, (xsltPath, loopState) =>
{
XmlTextWriter transformedXml = new XmlTextWriter(stringWriter);
// Create a XslCompiledTransform to perform transformation
XslCompiledTransform xsltTransform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings()
{
EnableDocumentFunction = true,
EnableScript = true
};
lock (xsltCompilerLocker)
{
xsltTransform.Load(xsltPath, settings, new XmlUrlResolver());
}
xsltTransform.Transform(xmlReader, argsList, transformedXml);
... (Do something with transformedXml)
}
正如我从 MSDN 中了解到的,Load 方法会在文件夹下创建临时文件%TEMP%
(如果在对象上启用了脚本XslCompiledTransform
),一旦对方法的调用完成,这些文件就会被删除Load
。
我的问题是,即使在锁定Load
方法时,我也会遇到以下异常:
拒绝访问路径“C:\Users\erezk\AppData\Local\Temp\iapqiwqu.tmp”。
该文件Load
是生成调用的临时文件之一。
有没有人遇到过这个?