首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS StackOverflow异常

IIS StackOverflow异常
EN

Stack Overflow用户
提问于 2012-06-20 05:10:04
回答 1查看 2.6K关注 0票数 7

这是同一问题的另一个变体,当在IIS下运行时,由于256K堆栈大小而发生StackOverflow异常。这个问题不是什么新鲜事,它已经被问了好几次了(herehere)

我的问题有点不同。当客户端请求数据,并且在IIS7下运行的WCF服务试图序列化相当大的对象图时,将引发异常。它实际上发生在序列化过程中。

通过在具有有限堆栈大小的线程中运行检索/序列化例程,我可以很容易地在开发环境中重现这个问题:

代码语言:javascript
复制
static void Main(string[] args)
{
   Thread t = new Thread(DoWork, 262144);
   t.Start();
   t.Join();
   Console.ReadLine();
}

private static void DoWork()
{
   var dataAccess = new DataAccess();

   var data = dataAccess.LoadData();

   var serializer = new DataContractSerializer(typeof(List<Data>), null, int.MaxValue, false, true, new DataContractSurrogate());

   var memoryStream = new MemoryStream();
   serializer.WriteObject(memoryStream, data );
}

这模拟了StackOverflow异常,就像在IIS中一样。当我将传递给线程的构造函数的stackSize参数更改为1MB时,它工作得很好…

我的问题是如何在WCF服务方法中做到这一点?换句话说,在我的WCF服务方法中,我没有显式地创建序列化程序并调用WriteObject。在我可以控制stackSize的线程中,我如何/在哪里可以做同样的工作?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-06-20 05:54:58

您可以通过更改可执行文件的PE标头来修改默认堆栈大小。将editbin.exe与/stack参数一起使用。请参阅http://msdn.microsoft.com/en-us/library/35yc2tc3(v=vs.80).aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11109480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档