2016-04-09 6 views
0

Я пытаюсь загрузить файл, когда я нажимаю на гиперссылку, но всегда получаю исключение, не найденное ресурсом.Ресурс не найден (действие контроллера MVC 5, .NET 4.6.1)

Контрольное действие никогда не попадает.

Index.cs.html:

@{ 
    ViewBag.Title = "Files"; 
} 

@Html.ActionLink("Download Report", "DownloadFile", "FileDownload", new { type = "pdf" }, new { @class = "" }) 

Вынесено Action-Link: http://localhost:58255/FileDownload/DownloadFile?type=pdf

Without Files route

Когда я раскомментируйте запись MapRoute "Files" в routeConfig ссылка действие оказывают например: http://localhost:58255/FileDownload/DownloadFile/pdf

With Files route defined

Но ни один из них не работает! -> Ресурс не может быть найден

контроллер (только действие Index получает удар, когда представление нагрузки, но ничего, когда я нажимаю на ActionLink):

[AllowAnonymous] 
public class FileDownloadController : Controller 
{ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

FilePathResult DownloadFile(string type) 
{ 
    var fn = $"~/Documents/Test.{type}"; 
    return File(fn, "application/pdf", Server.UrlEncode(fn)); 
} 

RegisterRoutes.cs:

public static void RegisterRoutes(RouteCollection routes) 
{ 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapMvcAttributeRoutes(); // for attribute routing on action 
AreaRegistration.RegisterAllAreas(); 

//routes.MapRoute(
// name: "Files", 
// url: "{controller}/{action}/{type}", 
// defaults: new { controller = "FileDownload", action = "DownloadFile", type = UrlParameter.Optional } 
//); 

// Should be last 
routes.MapRoute(
name: "Default", 
url: "{controller}/{action}/{id}", 
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 
} 

... из области WebForms ...

ответ

1

Попробуйте добавить общественный модификатор доступа до действия имени

public FilePathResult DownloadFile(string type) 
{ 
    var fn = $"~/Documents/Test.{type}"; 
    return File(fn, "application/pdf", Server.UrlEncode(fn)); 
} 
+0

Ooooh my ...... Я бы оценил соответствующее сообщение об ошибке. Спасибо! – Legends