c# - 如何在 C# 中停止 IIS 7 锁定 .XSLT 文件

标签 c# visual-studio-2008 xslt iis-7

我有以下几行代码:

xslt.Load(XmlReader.Create(new FileStream(@"C:\website\TransList.xslt", System.IO.FileMode.Open)));

xslt.Transform(mydoc.CreateReader(),null, sw);

它工作正常,如果我停止项目并再次启动它,我会收到以下错误:

[System.IO.IOException] = {“进程无法访问文件 'C:\website\TransList.xslt',因为它正被另一个进程使用。”

然后我必须转到命令行并执行 IISRESET 才能获取,我还可以重置应用程序池,这在这个时候最简单,因为这只是我的开发箱。

现在我确实在 try catch 语句中进行了调用,但我无法访问处理程序中的 xslt 对象。

xslt 对象似乎没有 close 或 dispose 方法。

垃圾收集器似乎从来没有尝试过。

有什么想法吗?

最佳答案

您需要关闭 FileStream 和 Reader,可以显式使用 .Close() 或通过 using 语句:

using (FileStream fs = new FileStream(@"C:\website\TransList.xslt", System.IO.FileMode.Open))
   {
    xslt.Load(XmlReader.Create(fs));
    using (var reader = mydoc.CreateReader())
        {
         xslt.Transform(reader, null, sw);
        }
     }

关于c# - 如何在 C# 中停止 IIS 7 锁定 .XSLT 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2213372/

相关文章:

css - 如何使 Visual Studio 停止 "compiling".js 和 .css 文件

c++ - PathFileExists 导致链接器错误 2028/2019

java - 如何将 xslt 结果转换为 Java 对象?

c# - 以编程方式访问 Windows 8.1 中最常用的应用程序

c# - 如何远程验证电子邮件或检查电子邮件是否存在

c++ - 在另一个进程地址空间,调用dll中的函数,如何

java - Spring 消息不在 JSP 中加载

xslt - 仅通过 XPath 计算特定子项的数量

javascript - 最小化浏览器窗口时调整 Kendo RangeSlider 的大小

javascript - 具有用于推送通知的 C# 后台任务的 WinJS 应用程序