首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XslCompiledTransform加载方法抛出“访问拒绝异常”

XslCompiledTransform加载方法抛出“访问拒绝异常”
EN

Stack Overflow用户
提问于 2017-07-18 15:35:16
回答 1查看 492关注 0票数 1

我有一个WinForms应用程序(x64)在.Net 4.6下运行。我使用XslCompiledTransform来使用XSLT文件操作一些XML文件。

XSLT转换是对许多XML文件并行完成的,如下所示:

代码语言:javascript
复制
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调用的临时文件之一。

以前有人遇到过这种情况吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-25 08:12:39

XslCompiledTransform类有一个名为TemporaryFiles的属性。这将包含在成功的Load调用期间创建的临时文件的文件名。这个属性的文档(https://msdn.microsoft.com/de-de/library/system.xml.xsl.xslcompiledtransform.temporaryfiles(v=vs.110).aspx说用户可以在调用Load之后删除它们)。所以我不认为它们是自动删除的。因此,如果不是这样,这个属性就没有意义了。

所以也许你应该试着在锁块里自己删除它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45171318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档