我试图从特定的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