URL не перенаправляется на контроллер
Я создал ImageController для обслуживания изображений из местоположения в моем проекте. Теперь я пытаюсь заставить его перенаправить из "/Image/file.png" на мой контроллер, но я не могу понять, что это правильно. Контроллер никогда не вызывался (я установил точку останова в первой строке действия, и она никогда не прерывается).
Мой маршрут:
routes.MapRoute(
"Image",
"Image/{file}",
new { controller = "Image", action = "Render", file = "" }
);
Мой ImageController:
public class ImageController : Controller
{
//
// GET: /Image/
public ActionResult Render(string file)
{
var path = this.getPath(file);
System.Diagnostics.Debug.WriteLine(path);
if (!System.IO.File.Exists(path))
{
return new HttpNotFoundResult(string.Format("File {0} not found.", path));
}
return new ImageResult(path);
}
private string getPath(string file)
{
return string.Format("{0}/{1}", Server.MapPath("~/Content/Images"), file);
}
}
Почему мой проект не перенаправляется из "Images/{file}" на мой контроллер?
1 ответ
Решение
Возможно, это связано с тем, что запрос направляется статическому обработчику файлов из-за расширения.png в URL. Вы можете попробовать передать имя файла и суффикс в виде отдельных параметров, примерно так:
routes.MapRoute(
"Image",
"Image/{filename}/{suffix}",
new { controller = "Image", action = "Render", filename = "", suffix = "" }
);
Ваше действие контроллера становится:
public ActionResult Render(string filename, string suffix)
И это должно соответствовать URL, как это:
/Image/file/png