2

私はiis 7.5でmvc 4アプリケーションを実行しています。このアプリケーションは、各製品に割り当てられた画像を含む製品カタログを作成します。

一部の製品には画像が割り当てられていない場合があり、このような状況では、何も表示しないよりは代わりの画像を含めたいと考えています。イメージが存在しないのは、実行時および 404 が発生するまでではありません。

条件に一致する画像から 404 が返された場合に既定の画像が表示されるように、IIS で URL 書き換えルールを設定することを考えています。これについていくつか質問があります。

それは可能ですか?これを行う際にパフォーマンスの問題はありますか? 上記を達成できる他の方法はありますか?

4

2 に答える 2

1

本当に IIS でこれを処理したい場合は、カスタム 404 エラー ページ構成を使用できます。
このソリューションのパフォーマンスについてはわかりませんが、それが問題になる理由がわかりません。

  1. すべての画像を含む をセットアップしVirtual Directoryます (これを と呼びましょうmy_images)。

  2. 一般的な画像を仮想ディレクトリのルートに追加します (したがって、この画像は url を使用して利用できますhttp://yourwebsite.com/my_images/generic.jpg)。

  3. IIS マネージャーmy_imagesで仮想ディレクトリを選択しError Pages、404 カスタム エラー ページを次のように編集します。

    404

これで、仮想ディレクトリの下のリソースにアクセスしようとしたときに 404 エラーが発生したときの一般的な画像が表示されるはずですmy_images

制限:

カスタム 404 エラー ページはイメージ形式に限定されないため、仮想ディレクトリの下で 404 エラーをトリガーする要求はすべて汎用イメージをレンダリングします。
を使用してテストする場合localhostは、 をクリックしEdit Feature Settings...て値を に変更する必要がありCustom error pagesます。

特徴

于 2013-02-18T16:58:27.703 に答える
1

良い質問。私の最初の考えは、ファイルがサーバー上に存在するかどうかを調べることです。これは、画像のデータベース列を持つほど簡単ではないと思います。

おそらく、画像がproductId(またはそのようなもの)と同じ名前になるフォルダーを調べるシナリオがあるでしょう。ファイルがそこにあるかどうかを調べるために System.IO.FileExists() を使用できます。これは信じられないほど効率的ではないかもしれません。

別のアイデアは、ファイルが存在するディレクトリを調べて、それらをある種の辞書に入れることです。それをアプリケーションキャッシュに保存できます。画像をレンダリングする前にキャッシュを見ることができます。もちろん、その辞書を更新する方法が必要です (つまり、その製品の製品画像がアップロードされます)。

書き換えがどのように機能するかはわかりません。それを避けるために、あなたはあなたの側で少し仕事をすることができると思います.

<img src="(@Dictionary[key] != null ? Model.Image : Model.EmptyImage)" />
于 2013-02-17T21:48:35.873 に答える