2009-03-04 19 views
1

私は、ユーザーがファイルをダウンロードするためのいくつかのリンクを提供するグリッドを持っています。ファイルはアプリケーションの外部に保存され、パス参照はデータベースから読み込まれ、HTTPハンドラ(* .ashx)が各要求されたファイルを処理するために使用されます。ただし、存在しないファイルを指すデータベースエントリが存在する可能性があります。私はFileNotFoundExceptionをキャッチしますが、不足しているファイルをユーザーに知らせるための最良の方法(サポートに連絡できるようにするために)が何であるか分かりません。ファイルダウンロードHTTPハンドラで404を処理する最善の方法は?

最初のアイデアは、レスポンスに標準の404コードを設定することです。これが私が今やっていることです。

欠落しているファイルについて通知(jQuery)を表示すると便利ですが、ファイルのダウンロードはAJAXでは行われないため、2段階のプロセスが必要になります。クライアントサイドのonclickハンドラは、メソッドがファイルが存在するかどうかをチェックし、そうでない場合は、クリックを取り消し(falseを返す)、フレンドリーなメッセージをユーザーに表示します。ただし、ファイルが存在する場合は、通常の実行を続行します。しかし、これはさらに別のサーバー呼び出しを追加します。

同様の問題に対処しましたか?どのように解決しましたか?

いくつかの説明 - アプリケーションはASP.NET 2.0で構築され、jQueryを使用してWebサービスメソッドを呼び出します。

答えて

1

パヴェル、...あなたはすでにあなたの質問に答えました

を...思わ上記Iを示すことによって...

(彼らは サポートに連絡することができるように)カスタム404ページを作成して、ディスク上に存在しないファイルをユーザーに通知し、サポートオフィスへの連絡方法に関する情報を提供することをお勧めします。

ファイルを処理するためのHTTPハンドラを作成しました。ファイルがディスク上に存在しない場合は、404応答を返します。私は404応答がスローされた場合カスタムページを表示するようにIISをセットアップしました。(そして私はエラー500も同じです)。

あなたのニーズに合ったソリューションを見つけることができれば幸いです。

+0

しかし、ファイルの欠落状況とページ全体が欠落している状況を区別することはできません。 「ファイル連絡先のサポートをダウンロードしようとしていた場合、見つからないページにアクセスしようとしていた場合など」というように、404ページについてさらに詳しい説明をすることができます。 –

+1

特定の404ページが見つからないファイルにリダイレクトするためにHTTPハンドラで実装することができます。それ以外の場合は「通常の」404を返します。 – RuudKok

+0

Doh!もちろん、リダイレクトは機能します!私は単純なResponse.Redirect()を行うのではなく、ステータスコードを渡して404ページにリダイレクトするためにフレームワークに頼っていました。とても分かりやすい...ありがとう! –

関連する問題