私は、ユーザーがファイルをダウンロードするためのいくつかのリンクを提供するグリッドを持っています。ファイルはアプリケーションの外部に保存され、パス参照はデータベースから読み込まれ、HTTPハンドラ(* .ashx)が各要求されたファイルを処理するために使用されます。ただし、存在しないファイルを指すデータベースエントリが存在する可能性があります。私はFileNotFoundException
をキャッチしますが、不足しているファイルをユーザーに知らせるための最良の方法(サポートに連絡できるようにするために)が何であるか分かりません。ファイルダウンロードHTTPハンドラで404を処理する最善の方法は?
最初のアイデアは、レスポンスに標準の404コードを設定することです。これが私が今やっていることです。
欠落しているファイルについて通知(jQuery)を表示すると便利ですが、ファイルのダウンロードはAJAXでは行われないため、2段階のプロセスが必要になります。クライアントサイドのonclickハンドラは、メソッドがファイルが存在するかどうかをチェックし、そうでない場合は、クリックを取り消し(falseを返す)、フレンドリーなメッセージをユーザーに表示します。ただし、ファイルが存在する場合は、通常の実行を続行します。しかし、これはさらに別のサーバー呼び出しを追加します。
同様の問題に対処しましたか?どのように解決しましたか?
いくつかの説明 - アプリケーションはASP.NET 2.0で構築され、jQueryを使用してWebサービスメソッドを呼び出します。
しかし、ファイルの欠落状況とページ全体が欠落している状況を区別することはできません。 「ファイル連絡先のサポートをダウンロードしようとしていた場合、見つからないページにアクセスしようとしていた場合など」というように、404ページについてさらに詳しい説明をすることができます。 –
特定の404ページが見つからないファイルにリダイレクトするためにHTTPハンドラで実装することができます。それ以外の場合は「通常の」404を返します。 – RuudKok
Doh!もちろん、リダイレクトは機能します!私は単純なResponse.Redirect()を行うのではなく、ステータスコードを渡して404ページにリダイレクトするためにフレームワークに頼っていました。とても分かりやすい...ありがとう! –