ブロブ ストリームから画像をキャッシュする方法を理解するのに苦労しています。
これは私の最初のコードであり、戻り値の画像ファイルをダウンロードするために機能します:
HTML 部分:
<img src="@Url.Action("GetImage", "Asset")?photoId=@SessionData.ProfilePic.PhotoID&type=3"/>
コントローラ:
public ActionResult GetImage(long photoId, PhotoType type)
{
byte[] img = <Code that fetches image byte from blob stream>;
return File(img, "image/png");
}
しかし、これはブラウザにキャッシュできません。
URLが次のように思われる場合、私は考えています:
http://stackoverflow.com/Asset/GetImage/1/2
画像をキャッシュすることができますか?
だから私は別のルートを作成します:
routes.MapRoute(
"Upload",
"Asset/GetImage/{photoId}/{type}",
new { controller = "Asset", action = "GetImage" }
);
次のように画像にアクセスします。
http://stackoverflow.com/Asset/GetImage/1/2
<img src="http://stackoverflow.com/Asset/GetImage/1/2" />
しかし、私はいつも得ます:
Failed to load resource: the server responded with a status of 404 (Not Found)
今私の質問は次のとおりです。
- URLがこのようにフォーマットさ
http://stackoverflow.com/Asset/GetImage/1/2
れていると、ブラウザによってキャッシュできるようになったと考えるのは正しいですか? - なぜこのエラーが発生するのですか?
Failed to load resource: the server responded with a status of 404 (Not Found)
ルートの何が問題になっていますか?
誰かが助けてくれることを願っています。
編集
これは私の完全なルートです:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Upload",
"Asset/GetImage/{photoId}/{type}",
new { controller = "Asset", action = "GetImage" }
);
var route = routes.MapRoute(
"Gallery",
"",
new { controller = "Auth", action = "Login" },
new[] { "Project.Areas.Gallery.Controllers" }
);
route.DataTokens["area"] = "Gallery";
それでもエラーが発生しますがFailed to load resource: the server responded with a status of 404 (Not Found)
、何が間違っているのでしょうか?
EDIT2
私が使用したメタタグのリスト:
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="description" content="">
<meta name="author" content="">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="imagetoolbar" content="false">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />