我試圖從特定的URL系統服務映像文件,就像這樣:MVC忽略某些路徑上的.jpg文件擴展名 - 使用Controller操作?
的mysite /圖片/分類/ File_Name.extension
我已經設置了路線,像這樣:
routes.MapRoute("ImagesRoute", // Route name
"Images/{category}/{file}.jpg", // URL with parameters
new { controller = "Posts",
action = "ViewImage",
category = "", file = "" } // Parameter defaults
);
這是應該映射到我的控制器操作:
public ActionResult ViewImage(string category, string file)
{
var dir = Server.MapPath("/Images");
var imgtitle = file.Replace("_", " ").Replace(".jpg", "");
var repos = new BlogImagesRepository();
var guid = repos.FetchImageByCategoryAndTitle(category, imgtitle);
var path = Path.Combine(dir, category, guid.ImageGuid.ToString());
return File(path, "image/jpeg");
}
如果我刪除從路由jpg擴展,並要求文件標題,而不.jpg的擴展名(即:Images/MyCategory/My_Image),它顯示得很好。 然而,加入jpg擴展導致404 error--
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
我認爲它看起來不是控制器行動的文件。
將.jpg添加到路徑中並未解決此問題;我不確定要做什麼,而且我在這裏看到類似的問題,所以我的谷歌運氣不是很高。
我該怎麼做.jpg和類似的圖像類型?我是否必須以某種方式設置對特定路徑的忽略?如果是這樣,我該怎麼做呢?目前該應用程序正在通過VS 2012。
你可以嘗試routes.RouteExistingFiles = true;或或這裏是一個不錯的文章http://www.codeproject.com/Questions/216044/Period-dot-in-ASP-NET-MVC-Route –
HaBo