在IIS中使用Saxon通过c#实现StackOverflowException

本文关键字:通过 实现 StackOverflowException Saxon IIS | 更新日期: 2023-09-27 18:14:35

我的代码试图用c#()编译一个大的XSLT2转换(不复杂,只是很多简单的—大约24,000行来自MapForce)。. NET 4.5(64位Win7)在Saxon HE(最新9.5)。

当我从控制台应用程序运行它时,它工作得很好(尽管很慢)。执行转换需要200-300ms,我得到了我期望的输出。

当我在IIS(7.5)中运行包裹在WCF服务中的相同代码时,或者作为IIS中的http处理程序,我在执行编译命令后不久得到StackOverflowException(下一行永远不会执行)。

如果我尝试一个小的转换,我的代码在IIS中工作。

事件和IIS日志没有显示任何有用的内容。

除了从源代码构建Saxon(显然有点困难-任何指针欢迎),看看这是否有帮助,有没有人有任何想法从哪里开始?

在IIS中使用Saxon通过c#实现StackOverflowException

经过一番折腾后,发现IIS工作进程的默认堆栈比独立应用程序的堆栈要小得多,这就是问题的原因。您可以修改.exe来改变这一点,但对我们来说,创建一个新线程并在创建时指定线程的堆栈大小更简单。问题立刻解决了。一个要记住的!