2

他の6つのクラスライブラリプロジェクトでasp.netアプリケーションを使用しています。メインのクラスライブラリプロジェクトの1つで、いくつかの静的DBテーブルをキャッシュします。Webdev.webserver40.exeは約1.5GBに達し、「システムのメモリ不足例外」をスローします。32ビットマシンではプロセスサイズが最大2GBに制限されていることは知っていますが、開発者のマシンは64ビットであり、64ビットに制限はありません。OK、64ビットマシンを使用していても、Asp.netアプリケーションは32ビットで実行されるとおっしゃっています。したがって、私は例外を取得しています。しかし、その問題を解決するために何ができますか?

  • 構成マネージャーを開き、すべてのクラスライブラリをx64として変更しようとしましたが、メインのWebサイトプロジェクトを変更できません。そのため、32ビットのWebサイトで64個の参照が認識されていません。

メモリにキャッシュする代わりに、ローカルDBまたは他のオプションを実行する必要があると言わないでください:)わかりました、これらも他のオプションですが、メモリ内にそれとにかくあるかどうかを知りたいです。 2GB以上のキャッシュもあります。

PS、[デバッグ]タブの[VSホスティングプロセスを有効にする]オプションとは何ですか。それは私の問題に影響を与えますか?チェックとチェックを外してみましたが、何も変わりませんでした。確かにそれをチェックする方がうまくいくように見えますが、それでも例外があります。

編集1:その投稿を見つけたので、64ビットOSで32ビットアプリケーションを実行している場合は、最大2800mbが必要であることがわかります。プロセスサイズですが、なぜそれが許可されず、約1500mbで例外がスローされます。

http://blogs.msdn.com/b/tom/archive/2008/04/10/chat-question-memory-limits-for-32-bit-and-64-bit-processes.aspx

編集2: msdnで提案されているように、キャッシュを行うクラスライブラリのapp.configとweb.configにそのコードを追加しようとしましたが、フレームワーク4.5のみと表示されていますが、4.0を使用しています。4.0にも同様のハックがありますか?前回のリリースではないのに4.5をインストールして使用を開始する必要があるかどうかわからないためです。

<runtime>
  <gcAllowVeryLargeObjects enabled="true" />
</runtime>

ご協力いただきありがとうございます。よろしく。

4

2 に答える 2

4

Visual Studio で 64 ビットを実行するように IIS Express を設定できます。

Visual Studio - ツール - オプション メニューに移動します。

選択: - プロジェクトとソリューション、次に Web プロジェクト

チェックボックスにチェックを入れます: 「Web サイトとプロジェクトに 64 ビット バージョンの IIS Express を使用する」

レジストリの編集は必要ありません。

于 2016-03-05T13:33:58.533 に答える
1

私は間違っているかもしれませんが、Webdev.webserver40.exe(別名 Cassini) は 32 ビット ネイティブ C++ アプリケーションであると信じています。

asp.net Web プロジェクトのプロパティ ページで、[IIS Express を使用する] というボックスをオンにして、問題が解決するかどうかを確認します。

編集:これらのことも確認してください-

  1. 実際にデータを保持するのに十分なRAMがあることを確認してください
  2. スワップ ファイル ドライブに十分な空き容量があることを確認してください
  3. スワップ ファイルが動的か固定サイズかを判断する
于 2012-07-16T19:49:44.157 に答える