在IIS中使用Saxon通过C#的StackOverflowException

时间:2014-07-24 00:20:12

标签: c# iis saxon stack-overflow

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

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

当我运行包含在IIS(7.5)中的WCF服务中的相同代码,或作为IIS中的http处理程序时,我在执行编译命令后立即得到一个StackOverflowException(从未执行下一行)。

如果我尝试使用小变换,我的代码可以在IIS中运行。

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

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

1 个答案:

答案 0 :(得分:0)

经过多次调整后,事实证明,IIS工作进程默认情况下的堆栈比独立应用程序小得多,这就是问题的原因。您可以修改.exe来更改它,但是我们创建一个新线程并在创建时指定线程的堆栈大小更简单。问题立刻解决了。一个要记住!