【问题标题】:StackoverflowException in IIS7 but not in CassiniIIS7 中的 StackoverflowException 但在 Cassini 中没有
【发布时间】:2010-10-25 08:47:17
【问题描述】:

我有一些 C# 代码在 IIS7 下运行时会给出 StackOverflowException,但是当它在 VS2008 中的 Cassini 下运行时,代码运行良好。

这是 Cassini 以不同方式处理这些异常的已知问题吗?

【问题讨论】:

  • 你能显示导致问题的代码吗?

标签: visual-studio-2008 iis-7 c#-2.0 cassini


【解决方案1】:

IIS 运行时为线程使用不同的堆栈大小。 IIRC 它是 256 KB,而不是在标准 .NET 运行时上运行时获得的标准 1 MB,这是 VS 使用的。换句话说,您的代码可能在常规 .NET 运行时运行良好,但在 IIS 下耗尽了堆栈。

从 Cassini 的角度来看,它听起来像是使用常规的 .NET 运行时,所以我希望它也使用每个线程 1 MB 的堆栈大小。

【讨论】:

  • 太好了,这似乎是问题所在。只需要看看我现在是否可以修复它。
  • @nelsona:很高兴我能帮上忙。如果您自己启动线程,则有一个构造函数,可让您设置堆栈大小。也可以通过更改可执行文件的 PE 头来设置默认堆栈大小。
  • 我正在使用这篇文章中的想法:blogs.msdn.com/b/tom/archive/2008/03/31/… 让事情发挥作用:-)
【解决方案2】:

您可以使用 EDITBIN 命令更改堆栈大小。或通过创建具有所需堆栈大小的自己的线程来更改它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多