iis - 应用程序池 - 启用 32 位应用程序 = false 生成堆栈溢出错误
问题描述
如果将其设置为 True - IIS > Application Pools > DefaultApplicationPool > Enable32BitApplication 那么应用程序工作正常。但是,如果将其设置为 False,则应用程序正在运行,但在记录后,它会显示 StackOverflowException。
.Net 框架:4.0
为什么它在 32bit-true 上正常运行并且无法运行 -false?信息是否足够?如果需要,我可以提供更多。
我尝试了很多解决方案来解决 - 框架注册、ISAP、处理程序、ISAP-CGi 限制、在 x64 上构建应用程序,但它没有解决。
观察:当我查看进程探索时,它从 SYSWOW64 加载 dll。
你能帮忙吗,那对我们来说会很棒。
解决方案
我们最近遇到了同样的问题,由于我们引入的一项更改显着增加了在某些数据驱动的自动生成代码中调用的方法数量,巧合的是,驱动代码生成的数据显着增加。
我们的客户在将 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-影响-asp-net/
推荐阅读
- r - 用数据框中的另一列标记 x 轴
- swift - 是否可以使用 CoreML 模型检测对象并找到该对象的测量值?
- c++ - ZMQ - 丢包
- android - 如何在每次点击时将 Android 按钮中编辑文本的最大长度字符限制增加 10 个?
- vue.js - 以编程方式设置输入值不会刷新组件 DOM
- r - openxlsx 使用与我的普通 Excel 应用程序不同的表格样式
- android - setDefaultNightMode() 仅在 PreferenceFragment 中的第二次调用后有效
- sql-server - SQL Server 中的按位运算
- c# - JSON 值无法转换为 System.Int32
- javascript - 检测圆重叠