请注意,这个问题在32位的win7下没有发现,可能只有在64位系统下才会有问题.
微软在.NET2.0后推荐使用全新的XslCompiledTransform类来替换原有的XslTransform类解析XSL文件。
但是在实际运用中发现,在64位Win2003下有时XslCompiledTransform类在读取较大的XSL时会抛出异常。
该异常为: System.StackOverflowException,即堆栈溢出。 而在使用旧的XslTransform类时则没有问题。
http://social.msdn.microsoft.com/forums/en-US/asmxandxml/thread/25ee3141-2261-41c4-9996-71f9a3c95aaf
相关资料如下:
解决办法如下:
1.使用原有的XslTransform类,但可能面临下一个.NET版中中被废弃,以及性能相对较差的风险;
2.使用XSLTC编译XSL文件成DLL,然后继续使用XslCompiledTransform类在Load这个DLL文件;
http://msdn.microsoft.com/en-us/library/bb399405.aspx
3.修改XSL文件以及增在IIS文件的堆栈大小。
注:这个问题一般出现在Web系统中,在WinForm应用程序下一般没有问题。
原因在于IIS下默认堆栈大小只有256K,而WinForm中则有1M。
http://blogs.msdn.com/b/tom/archive/2008/03/31/stack-sizes-in-iis-affects-asp-net.aspx
更多资料请参照: