[.NET]Scripting.TextStream Wrrite Method造成System.OutOfMemoryException

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:從零開始的軟體開發生活

請大家繼續支持 ^_^