4

2 つのディレクトリ (books と export) を持つアプリケーションがあります。
アプリケーションで書籍または書籍のページを作成すると、ページの ID を持つディレクトリが追加されます (これはリソースのアップロード用です)。
ページを削除すると、ページ (およびそのディレクトリ) はデータベースとファイルシステムから削除されます。

ただし、これによりセッションが失われました (アプリケーションの再起動さえ)。Googleで何かを調べたところ、次のリンクが見つかりました。
ASP.NET 2.0 (および 3.5) の問題のようです。

現在、夜間にディレクトリをクリーンアップするサービスを作成することを考えています。
しかし、これには別の解決策が必要ですか?
ああ、ディレクトリを仮想ディレクトリの外に置くことはオプションではありません。

4

5 に答える 5

6

ファイル システムの監視を無効にしてみてください。これにより、セッションが存続しなくなります。 この記事はあなたに役立つかもしれません。

于 2009-02-02T10:29:01.653 に答える
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 を参照することもできます。実際のディレクトリのように表示されます。

于 2009-02-02T10:19:25.993 に答える
1

私も同じ問題を抱えていました。解決策は、ASP.Net State サービスを使用してセッション処理を外部化することです。唯一の欠点は、セッションに配置するすべてのオブジェクトをシリアライズ可能にする必要があることです。これは、状態サービスに転送されて戻るためです。

現在、これ以上のリンクを提供する可能性はありませんが、何を検索すればよいかがわかったので、Google がお手伝いします。

于 2009-02-02T10:18:04.467 に答える
1

サチンが言及した記事と同じことを達成するサポートされているホットフィックスがあるようです (Web サイトでファイル変更通知をオフにします)。

詳細については、Microsoft KB のこの記事を確認してください。

しかし、コメントでサーバーにアクセスできないと述べたので、これもあなたの場合には役に立たないと思います。

于 2009-02-02T10:50:26.117 に答える
1

頻繁に更新、作成、削除されるデータ ファイルを保存するには、Web サイトのルートにある App_Data フォルダーを使用する必要があります。App_Data フォルダーの状態の MSDN:

MDF ファイル、XML ファイル、およびその他のデータ ストア ファイルを含むアプリケーション データ ファイルが含まれます。App_Data フォルダーは、ASP.NET 2.0 でアプリケーションのローカル データベースを格納するために使用されます。このデータベースは、メンバーシップとロールの情報を維持するために使用できます。

App_Data フォルダーの使用方法については、Q&A セクションも確認してください: App_Data フォルダーの質問

于 2009-02-02T10:59:53.103 に答える