我正在尝试从特定的 url 系统提供图像文件,如下所示:
mysite/Images/Category/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 扩展名并请求 url 上没有 .jpg 扩展名的文件标题(即:Images/MyCategory/My_Image),它显示得很好。但是,添加 .jpg 扩展名会导致 404 错误——
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
我假设它正在寻找文件,而不是控制器操作。
将 .jpg 添加到路线并不能解决此问题;我不确定该怎么做,而且我的谷歌运气并不是很高,因为我在这里看到了类似的问题。
如何为 .jpg 和类似图像类型执行此操作?我是否必须以某种方式为该特定路径设置忽略?如果是这样,我该怎么做?该应用程序目前正在通过 VS 2012 运行。