2014-10-13 3 views
-1

Я получаю ошибку "VirtualPath must be a non-empty string starting with ~/."маршрутизации в Asp.Net MVC4

Описание: Необработанное исключение при выполнении текущего веб-запроса. Просмотрите трассировку стека для получения более информации об ошибке и ее месте в коде.

Сведения об исключении: System.ArgumentException: VirtualPath должен быть непустой строкой, начинающейся с ~ /. Имя параметра: виртуальный_путь

в коде ниже:

public class RouteTableHelper 
    { 
     public static RouteCollection UserSiteRoutes() 
     { 
      RouteCollection routes = new RouteCollection(); 
      RegisterRoutes(routes); 
      return routes; 
     } 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
       ............... 
      routes.MapPageRoute("catalogAnnualreport2013", "catalog/annualreport2013", "www.facebook.com"); 
      ............. 
     } 
    } 
+3

Нельзя перенаправить на произвольный URL-адрес, он должен находиться на вашем веб-сайте, если вы хотите перейти на какой-либо другой сайт, вам нужно будет сделать перенаправление. –

ответ

2

Маршрутизация не распространяется за пределы вашего собственного сайта. Может быть, лучше использовать стандартную настройку маршрутизации MVC и сделать действие контроллера, перенаправляющее пользователя на Facebook?

public class CatalogController:Controller 
{ 
    public ActionResult Annualreport2013() 
    { 
     return Redirect("http://www.facebook.com"); 
    } 
} 
3

Согласно MSDN, третий параметр должен быть виртуальной URL (включая корень приложения ~). Следовательно, имя параметра: physicalFile.

Что-то вроде:

routes.MapPageRoute("catalogAnnualreport2013" // routeName 
        , "catalog/annualreport2013" // routeUrl 
        , "~/yourPage.aspx" // physicalFile 
        ); 

yourPage.aspx Где это один из ваших собственных страниц ASP.NET ASPX. Вы не можете перенаправить на внешний URL-адрес, например www.facebook.com в свой вопрос.

Все перенаправление на внешние источники должно выполняться с помощью действия контроллера (с использованием Controller.Redirect) или Response.Redirect на странице ASPX или обработчике ASHX.

+0

Не могли бы вы рассказать мне, как перенаправить на внешний URL. Пожалуйста, ответьте как можно скорее. –

+0

См. Обновление. –

1

Я считаю, что MapPageRoute используется только для маршрутизации WebForms (MSDN docs). Я всегда использовал расширение MapRoute в приложениях MVC.

Смежные вопросы