Scripting.TextStream Wrrite Method造成System.OutOfMemoryException
我們有一支Client Server的.NET程式,原本在比較差的PC上執行報表(使用組字串方式)可以顯示出來。
後來User換新PC(雙核心)後,執行報表反而出現System.OutOfMemoryException的錯誤!
後來參考保哥的解決 ASP.NET 中 System.OutOfMemoryException 的問題設定<gcServer enabled="false" />的方式後,可以正常執行。
過了一個月後,User又說出現了「System.OutOfMemoryException」,再加上<gcConcurrent enabled="false" />。
還是會錯,於是查看元件錯誤所在,原來是死在Scripting.TextStream的Wrrite Method。
因為這元件當初是從COM升上來的,所以把TextStream改用IO.StreamWriter後,報表又正常了!
原本的Code如下,
Dim objFS As Scripting.FileSystemObject
Dim objTS As Scripting.TextStream
objFS = CreateObject("Scripting.FileSystemObject")
objTS = objFS.CreateTextFile(fileName, vblnOverwrite, True)
Call objTS.Write(reportContent)
objTS.Close()
改成以下的Code,
Dim outFile As New System.IO.StreamWriter(fileName, False)
outFile.Write(reportContent)
outFile.Close()
Config的設定如下,
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<runtime>
<gcServer enabled="false" />
<gcConcurrent enabled="false" />
</runtime>
</configuration>
改在 %WINDIR%\Microsoft.NET\Framework\v2.0.50727\Aspnet.config 檔案 ( 如果是 .NET 1.1 要修改 %WINDIR%\Microsoft.NET\Framework\v1.1.4322\Aspnet.config 檔案 )
改完後請記得要 IIS Reset 哦!
希望下個月不會再發生錯誤呀~~~
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^