我有以下几行代码:
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/