4

多くのことにHttpRuntime.Cacheを使用する既存のasp.net4.0Webサイトがあります。作業を開始する前はこのように作成されていましたが、キャッシュがクリアされ、ウェブサイトがフォールバックするという問題が発生しています。これは、常にキャッシュが存在することを期待しているためです(私は知っています...彼らはキャッシュが何であると考えていましたか? !?)。

したがって、必要なのは永続的な置換キャッシュであり、Webサイトに影響を与えることなくHttpRuntime.Cacheと交換できます。シリアル化について見てきましたが、すべてのオブジェクトがシリアル化できるわけではなく、すべてをシリアル化できるようにするオプションはありません(オブジェクトの数が多すぎて散在しています)。

メモリオブジェクト/変数/その他のものをディスクに保存し、シリアル化せずに後で読み取る方法はありますか?

アップデート:

これまでのコメントと回答に感謝します。あなたのアイデアから始めて、私はもう少しグーグルをして、.Net 4.0であなた自身のカスタムキャッシングプロバイダーを使用する方法を(ダウンロードできるサンプルソリューションで)示すこの記事に出くわしました。私はそれを私たちのWebアプリケーションに統合して適切なテストを行うことができませんでしたが(願わくば今日の後半にできるようになるでしょう)、ここに置いて、何か考えがあるかどうかを確認したいと思いました。 ..それで、あなたはどう思いますか、私が知っておくべき警告はありますか?それとも、これは実行可能な(そして非常に一時的な)解決策ですか?

Webおよび非Webアプリ用のファイルベースのキャッシュとExtendASP.NET4.0 OutputCacheProvider

4

2 に答える 2

5

リフレクションを使用して独自の「シリアル化」を記述し、すべてのプリミティブフィールドを取得して、クラスパスと値として保存できます。長時間の操作になりますが、クラスをファイルとして保存できます。より良い解決策は、実際のシリアル化を使用することです。

于 2012-11-19T06:50:29.743 に答える
0

このリンクは機能したので、それが私の答えになります。みんなの助けてくれてありがとう!

Webおよび非Webアプリ用のファイルベースのキャッシュとExtendASP.NET4.0 OutputCacheProvider

于 2012-12-02T22:04:27.700 に答える