Я хочу настроить маршрут в ASP.NET MVC. С участием

@Url.Action("ViewDoc", "Home", new { FileName = "ABC.pdf" })

А также

 routes.MapRoute(
         name: "",
         url: "{controller}/{action}/{FileName}",
         defaults: new
         {
             controller = "Home",
             action = "ViewDoc",
             FileName = UrlParameter.Optional
         }

Я получил

http://localhost/Home/ViewDoc?FileName=ABC.pdf

Как получить ниже?

http://localhost/Home/ViewDoc/ABC.pdf
0
Nands 31 Май 2014 в 15:46

3 ответа

Лучший ответ

Я смог получить

 localhost/Home/ViewDoc/ABC.pdf 

С участием

public FileResult View(string FileName) { 

А также

routes.MapRoute( "", "Home/ViewDoc/{FileName}", new { controller = "Home", action = "ViewDoc" } ); 

Для ошибки 404.0 добавлено следующее под

 <add
       name="AdfsMetadata"
       path="/Home/ViewDocu/*"
       verb="POST"
       type="System.Web.Handlers.TransferRequestHandler"
       preCondition="integratedMode,runtimeVersionv4.0" />
0
Nands 3 Июн 2014 в 08:36

Код, который вы вставили, правильный, но порядок в настройке маршрута, вероятно, неправильный. Переместите метод routes.MapRoute так, чтобы он находился выше маршрута по умолчанию, и он должен работать должным образом.

2
DavidG 31 Май 2014 в 16:04
Мне удалось получить localhost/Home/ViewDoc/ABC.pdf с общедоступным представлением FileResult (string FileName ) { and route.MapRoute( "", "Home/ViewDoc/{FileName}", new { controller = "Home", action = "ViewDoc" } ); Но теперь я получаю сообщение об ошибке: HTTP Error 404.0 - Not Found Ресурс, который вы ищете, был удален, его имя было изменено или он временно недоступен.
 – 
Nands
2 Июн 2014 в 11:55
Так был ли мой ответ правильным? Если да, то вы задаете другой вопрос?
 – 
DavidG
3 Июн 2014 в 03:54
Мне пришлось изменить код, как в комментарии выше, чтобы он работал.
 – 
Nands
3 Июн 2014 в 08:32

Что касается вашей ошибки 404:

Я использую такой же URL-адрес с именем файла в конце и получаю ту же проблему с маршрутизацией. Как и вы, я пытаюсь поймать звонок с помощью контроллера.

Я думаю, проблема в том, что URL-адрес рассматривается как прямая ссылка на файл на сервере, и он просто попытается получить файл вместо вызова контроллера. Если файл не будет найден в физическом расположении, предложенном URL-адресом, возникнет ошибка 404.

Обходной путь, который я решил использовать, - это добавить символ «/» в самом конце URL-адреса после имени файла. Есть и другие.

Я предлагаю вам прочитать этот связанный с этим вопрос: Точки в URL-адресе вызывают ошибку 404 с ASP.NET mvc и IIS

1
Community 23 Май 2017 в 14:52