2

アップロードは62MBファイルで正常に動作します。ただし、100MBの場合は例外をスローします。EntityFramwork System.OutOfMemoryException varbinaryに100MBを挿入するとき

私はstackoverflowでいくつかの質問を見つけましたが、どれもデータ型に関して非常に具体的なものはありません。

あなたの助けをお待ちしております。

ASP.Net 4、IIS7、EntityFramework 4.1、Visual Studioの2010 SP1、SQL 2008

データ型ですvarbinary型(最大)

のapplicationHost.config

<section name="requestFiltering" overrideModeDefault="Allow" /> 

web.config

<httpRuntime maxRequestLength="1148576" executionTimeout="3600"/> 

<security > 
    <requestFiltering> 
    <requestLimits maxAllowedContentLength="112400000" /> 
    </requestFiltering> 
</security> 

私はEntityDataModelを使用します。デザイナーから次の例外がスローされました。

enter image description here

enter image description here

+0

「プレーン」EFコードのように見えません - これはWCF RIAを使用していますか? –

+0

ストリーミングやMTOMメッセージのエンコーディング(実際にはWCFの場合)を試してください。 –

+0

私はEntityDataModelを使用しています。例外がそこから投げられました。 – Win

答えて

2

あなたのファイルがあなたの記憶のために大きすぎるように見えます。これはおそらく、処理中にファイルのバイトが数回コピーされ、そのサイズがプロセスに掛けられるからです。

このエラーについて何か驚きましたか?

+0

ローカルコンピュータとサーバーの両方にまだ多くのメモリがあります。私は何かを逃していますか、EF doensは100MBのファイルを許可しませんか?ありがとう! – Win

+1

プロセスは32ビットですか?いずれにせよ、誰も意図的にOOMを投げていません。あなたは** OOMです、あなたはなぜか分かりません。 – usr

+1

あなたのアプリケーション内のファイルの内容はわかりませんが、MSDNによると: "このメソッドは、変更を追跡する信頼できるメカニズムを提供せずにバイト配列が変更可能であるため、値のコピーを返す必要があります。 - したがって、EFは既に配列の2つのコピーを作成します。ファイルの内容を配列に読み込んでプロパティを設定する場合は、おそらくもう一つのコピーがあります。データをデータベースに保存した場合、EFは元の値にもう一度コピーすることができます... – Pawel

関連する問題