刚开始使用NVelocity(v1.1.1),似乎工作得很好。
只有一件小事让我烦恼。我已经设置了VS2010以在每次抛出异常时中断,即使它在某处被处理,并且当运行以下代码时,它总是在调用Evaluate时断开,声明它“无法从已关闭的TextReader中读取”(ObjectDisposedException) )。我没有NVelocity的源代码,所以我无法调试。
我错过了某个导致这种情况的设置吗?它只是NVelocity中的一个无害的错误吗?结果很好,对我来说,似乎有点不太正确。
var velocity = new VelocityEngine();
var properties = new ExtendedProperties();
var context = new VelocityContext(fieldValues);
properties.AddProperty("velocimacro.library", string.Empty); // no library
velocity.Init(properties);
using (var writer = new StringWriter())
{
velocity.Evaluate(context, writer, null, templateContents);
return writer.ToString();
}
异常堆栈跟踪:
在System.IO .__ Error.ReaderClosed()at System.IO.StringReader.Read(Char []缓冲区,Int32索引,Int32计数)
在NVelocity.Runtime.Parser.VelocityCharStream.FillBuff()中 c:\ ... \ src \ NVelocity \ Runtime \ Parser \ VelocityCharStream.cs:第313行