【问题标题】:NVelocity: "Cannot read from a closed TextReader"NVelocity:“无法从关闭的 TextReader 中读取”
【发布时间】:2012-03-15 11:00:31
【问题描述】:

刚刚开始使用 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() 在 System.IO.StringReader.Read(Char[] 缓冲区,Int32 索引,Int32 计数)
在 NVelocity.Runtime.Parser.VelocityCharStream.FillBuff() 中 c:\...\src\NVelocity\Runtime\Parser\VelocityCharStream.cs:313 行

【问题讨论】:

  • 对你的问题不太有答案,但如果你愿意深入研究,它似乎是source code is available
  • 谢谢,我自己一直在寻找源代码,但是您链接到的项目是原始 NVelocity 项目的一个分支。我可以查看分叉版本,看看是否能找到问题的根源。不知道有没有1.1.1版本的源代码?
  • @Jeroen :那不是佳能 NVelocity 存储库。权威存储库位于 github.com/castleproject/MonoRail/tree/master/MR2/NVelocity 。 codeplex 的分支是一个无人维护的分支。
  • @MauricioScheffer 啊,是的,我现在明白了,对于错误信息,我们深表歉意!

标签: c# .net nvelocity textreader


【解决方案1】:

【讨论】:

  • 感谢源链接,我自己看看具体的!
  • @Bernhof :底线:这不是一个真正的问题。阅读有关第一次机会异常以及如何在调试器中禁用它们的信息。
  • 我知道。我只是好奇为什么会抛出异常。无论是否是第一次机会,异常只应在异常情况下引发。而且我的例子确实看起来并不特别。
  • @Bernhof : NVelocity 已经很老了,它是从更老的 Java Velocity 移植过来的……所以代码在很多地方都很烂:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 2014-09-26
相关资源
最近更新 更多