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
Другие вопросы по тегам