NVelocity:“无法从封闭的TextReader中读取”

时间:2012-03-15 11:00:31

标签: c# .net nvelocity textreader

刚开始使用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行