Jam*_*ell 5 c# xslt iis-7 visual-studio-2008
我有以下几行代码:
xslt.Load(XmlReader.Create(new FileStream(@"C:\website\TransList.xslt", System.IO.FileMode.Open)));
xslt.Transform(mydoc.CreateReader(),null, sw);
Run Code Online (Sandbox Code Playgroud)
它工作正常,如果我停止项目并再次启动它,我收到以下错误:
[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);
}
}
Run Code Online (Sandbox Code Playgroud)