ディレクトリを削除するとアプリケーションが再起動される
-
20-08-2019 - |
質問
2 つのディレクトリ (ブックとエクスポート) を持つアプリケーションがあります。アプリケーションで本または本のページを作成すると、ページの ID を持つディレクトリが追加されます (これはリソースをアップロードするためのものです)。ページを削除すると、そのページ (およびそのディレクトリ) がデータベースとファイルシステムから削除されます。
ただし、これによりセッションが失われます (アプリケーションの再起動も発生します)。Googleでいろいろ調べてみたところ、以下のようなことが分かりました リンク。これは ASP.NET 2.0 (および 3.5) の問題のようです。この問題の解決策を持っている人はいますか。
私たちは現在、夜間にディレクトリをクリーンアップするサービスを作成することを検討しています。しかし、これには別の解決策があるはずです。ああ、仮想ディレクトリの外にディレクトリを置くことはオプションではありません。
解決
ああ、仮想ディレクトリの外にディレクトリを置くことはオプションではありません。
(これまでのところ) ディレクトリを仮想ディレクトリの外に置くことが私が見つけた唯一の解決策です。できることは、ディレクトリが仮想ディレクトリ内にあるように見えるように、ファイル システムにリンク (ジャンクション) を作成することです。例:
- 当社の Web サイト (仮想ディレクトリ) は C:\projectX\website にあります。
- データ ディレクトリ (ファイルとフォルダーを作成/削除する場所) は C:\projectX\data にあります。
- 次に、データ フォルダーを C:\projectX\website\data として利用できるようにするリンクを作成します。
リンクは、プログラム Linkd.exe (Windows リソース キットで入手可能) を使用し、次のコマンドを使用して作成されます。
linkd c:\projectX\website\data c:\projectX\data
c:\projectX\website\data は、実際のデータ ディレクトリを指すリンク/ジャンクションになります。リンクは物理ディレクトリであるかのように操作できます。
例えば。Web サイトでは、次のコードを使用してアクセスできます。
Server.MapPath("~/data")
また、Windows ファイル エクスプローラーを使用して、C:\projectX\website\data を参照することもできます。実際のディレクトリと同じように表示されます。
他のヒント
ファイル・システムの監視を無効にしてみてください。これは生きているあなたのセッションを防ぐことができます。 このあなたのための役に立つかもしれの記事ます。
サチンは(ウェブサイトでのファイル変更通知をオフに)言及した記事と同じを達成しサポートされている修正プログラムがあるようです。
詳細については、Microsoft KB でこの記事をチェックします。
しかし、あなたは、サーバーへのアクセスを持っていないことを、コメントで述べているので、私はこれはまた、あなたのケースで役立つことはありませんと思います。
頻繁に更新、作成、削除されるデータ ファイルを保存するには、Web サイトのルートにある App_Data フォルダーを使用する必要があります。App_Data フォルダーの MSDN には次のように記載されています。
MDFファイル、XMLファイル、その他のデータストアファイルなどのアプリケーションデータファイルが含まれています。APP_DATAフォルダーは、ASP.NET 2.0によって使用され、アプリケーションのローカルデータベースを保存します。これは、メンバーシップおよびロール情報の維持に使用できます。
App_Data フォルダーの使用法については、Q&A セクションも確認してください。 App_Data フォルダーの質問
私は同じ問題を抱えていました。解決策は、ASP.Net状態サービスを使用して、セッションの取り扱いを外部化することです。唯一引くそれは状態サービスとバックに転送されるように、直列化可能にする必要があり、すべてはあなたがセッションに置くオブジェクトということです。
私は現在、さらにリンクを提供する可能性を持っていないが、Googleは検索するために何を知っている今、あなたを助けるます。