代码之家  ›  专栏  ›  技术社区  ›  user426445

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

  •  0
  • user426445  · 技术社区  · 10 年前

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

    当我从控制台应用程序运行这个程序时,它运行得很好(尽管速度很慢)。执行转换需要200-300毫秒,我得到了预期的输出。

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

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

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

    除了从源代码构建Saxon(显然有点难——欢迎任何指针)来看看这是否有帮助之外,有人知道从何入手吗?

    1 回复  |  直到 10 年前
        1
  •  0
  •   user426445    10 年前

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