64位Win2003中使用XslCompiledTransform读取XSL文件时出现异常的解决方案

请注意,这个问题在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

 

相关资料如下:

http://stackoverflow.com/questions/440755/xslcompiledtransform-vs-xsltransform-and-how-about-an-oom-for-good-measure

 

解决办法如下:

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

 

更多资料请参照:

http://social.msdn.microsoft.com/forums/en-US/xmlandnetfx/thread/6edac9a7-0cf0-45a6-b196-c4308b54b937/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值