Переполнение стека происходит, когда размер вашего стека достигает определенного предела, и больше элементов не может быть помещено в стек. Размер стека по умолчанию в Windows обычно составляет 1 МБ и не имеет никакого отношения к общему объему памяти, доступной для процесса (поэтому анализ памяти, используемой w3wp.exe, не имеет большого смысла в вашем случае).
Можно увеличить размер стека исполняемого файла. Из командной строки Visual Studio вы можете ввести
editbin /STACK:4000000 w3wp.exe
для увеличения размера стека до 4 МБ.
Однако может также случиться так, что переполнение стека вызвано проблемой в коде (обычно бесконечная рекурсия ), которая возникает только при размещении в качестве службы WCF.
Чтобы отследить эту проблему, вам нужно выяснить, где происходит рекурсия. Если вы не можете получить трассировку стека, вам может помочь интенсивное ведение журнала.
UPDATE
Как представляется, w3wp.exe не использует размер стека по умолчанию в Windows, равный 1 МБ, но использует только 256 КБ (см. Также эту статью базы знаний ):
dumpbin /HEADERS c:\windows\system32\inetsrv\w3wp.exe
отпечатков:
[...]
OPTIONAL HEADER VALUES
[...]
40000 size of stack reserve
A сообщение в блоге предлагает исправить файл w3wp.exe, используя editbin
, как описано выше.