【问题标题】:Application Pool - Enable 32-bit application = false generating stack overflow error应用程序池 - 启用 32 位应用程序 = false 生成堆栈溢出错误
【发布时间】:2019-11-27 12:05:39
【问题描述】:

如果将其设置为 True - IIS > 应用程序池 > DefaultApplicationPool > Enable32BitApplication 那么应用程序工作正常。 但是,如果将其设置为 False,则应用程序正在运行,但在记录后,它会显示 StackOverflowException。

.Net 框架:4.0

为什么它在 32bit-true 上运行正常,却无法运行 make -false? 信息是否足够?如果需要,我可以提供更多。

我尝试了很多解决方案来解决 - 框架注册、ISAP、处理程序、ISAP-CGi 限制、在 x64 上构建应用程序但它没有解决。

观察:当我查看进程探索时,它从 SYSWOW64 加载 dll。

你能帮忙吗,那对我们来说很好。

【问题讨论】:

    标签: iis stack-overflow 32bit-64bit wow64 syswow64


    【解决方案1】:

    我们最近遇到了同样的问题,由于我们引入的一项更改显着增加了在某些数据驱动的自动生成代码中调用的方法数量,巧合的是,驱动代码生成的数据显着增加。

    我们的客户在将 Enable32BitApplication 设置为 false 的情况下在 IIS 下运行我们的组件时遇到了同样的问题。

    原来 IIS 在 2008R2 和更高版本上创建的线程的默认堆栈大小现在更小了。见:https://support.microsoft.com/en-us/help/932909/by-default-the-maximum-stack-size-of-a-thread-that-is-created-in-a-nat

    我们能够通过让我们的代码显式创建一个堆栈大小为 1MB 的线程(这是 IIS 外部的默认值)来解决此问题。我们的组件是用 C#/.NET 编写的。

    如果您无法以编程方式更改堆栈大小,您仍然可以使用editbin,如下所述:https://blogs.msdn.microsoft.com/tom/2008/03/31/stack-sizes-in-iis-affects-asp-net/

    【讨论】:

      猜你喜欢
      • 2023-02-15
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 2019-02-19
      相关资源
      最近更新 更多