Console.SetOut不起作用时该怎么办?

时间:2013-10-23 18:07:24

标签: .net console saxon ikvm

我觉得我撞墙了。我正在开发一个使用Saxon库来执行XSLT转换的Web应用程序。该应用程序曾经是一个控制台应用程序,只是简单地将输出打印到控制台,但随后,我们决定要从网络上控制应用程序。

我编写了一个自定义TextWriter类,该类输出到网页,并使用Console.SetOutConsole.SetError将我的控制台输出定向到网页。

然而,Saxon正在使用某种Java兼容性库,它似乎不受Console.SetOut的影响,因此当我在Web上运行应用程序时,内部Saxon错误不会出现在网页上

我的问题的简短版本是:假设我调用Console.SetOut来更改控制台文本输出的位置,但它不起作用。那么呢?

1 个答案:

答案 0 :(得分:0)

我很惊讶Console.SetOut和Console.SetError不起作用。 Saxon on .NET使用通过使用IKVMC交叉编译到.NET的OpenJDK库,我希望输出流的映射能够使这些方法起作用。如果您认为此处存在错误,则可以在saxonica.plan.io的Saxonica支持网站上找到报告的位置,并举例说明该问题。

但是,重定向Saxon错误消息的更好方法可能是注册自己的ErrorListener。您不能直接在.NET Saxon API中执行此操作,但您可以通过从XsltTransformer获取Controller并使用javax.xml.transform.ErrorListener接口的实现调用其setErrorListener方法来完成此操作。