1

HTML をバイト配列に変換して PDF に変換するアプリケーションがあります。ただし、バイト配列のサイズが13 MBを超えると、次のようになります。OutOfMemoryException

私の知る限り、32 ビット マシンの変数には最大 2GB を割り当てることができ、使用されている他の変数も破棄します。なら、理想的には記憶力が落ちないほうがいいですよね?

さらに、バイト配列のサイズを最初に1 gbとして宣言すると、エラーは発生しませんが、データが割り当てられると、配列のサイズはデータのサイズに従ってサイズ変更され、 13 gb を超えるとそれはクラッシュしますか?

1 GB のメモリを保持するように既に宣言しているのに、配列のサイズが変更されるのはなぜですか?

* *編集:

以下は、エラーの原因となる私のコード行です。

objpage.Layout(html1); //html1 holds my huge full HTML which is of approx 5.5k word doc                 //pages 

pdfBuffer = new byte[1073741824]; //declare the byte array of size 1 gb,no error here.  //Note, i just added this declaration, this is not the cause of the problem, it wasn't //initially there 

pdfBuffer = document1.WriteToMemory(); //This is my API method of the third party tool  //which converts pdf document object to byte array. This line is where the error comes (my //array of 1 GB gets resized to 13+ MB) 
4

2 に答える 2

0

私は以前にこのような同様の問題を抱えています、

webconfigファイル内のいくつかのコードを編集しようとしましたが、これがうまくいきました。

<system.web>
<httpRuntime executionTimeout="100" maxRequestLength="819200" useFullyQualifiedRedirectUrl="false"/>
</system.web>

実行タイムアウトと最大リクエスト長を編集してみましたか? それを変更して、より高い数値を指定してみてください。

于 2013-11-13T04:46:11.830 に答える
0

これを一度お試しください

 <system.web>
 <httpRuntime maxRequestLength="2000000000" executionTimeout="99999999"/>
 <pages validateRequest="false"/>
 </system.web>

ここで、アプリケーションに応じて値を増やします

于 2013-11-13T05:54:29.377 に答える