2014-10-13 3 views
-1

에 나는 "VirtualPath must be a non-empty string starting with ~/." 오류를라우팅 Asp.Net MVC4

설명을 얻고있다 : 처리되지 않은 예외가 현재 웹 요청을 실행하는 동안 오류가 발생했습니다. 오류에 대한 정보와 코드에서 오류가 발생한 위치에 대한 정보는 에 대한 스택 추적을 검토하십시오.

예외 정보 : System.ArgumentException : VirtualPath는 ~ /로 시작하는 비어 있지 않은 문자열이어야합니다. 매개 변수 이름 : 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입니다. 같은

뭔가 : yourPage.aspx 자신의 ASP.NET ASPX 페이지 중 하나입니다

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

. 질문에서 www.facebook.com과 같은 외부 URL로 연결할 수 없습니다.

외부 소스로의 리디렉션은 모두 컨트롤러 작업 (Controller.Redirect 사용) 또는 Response.Redirect (ASPX 페이지 또는 ASHX 처리기)에서 수행해야합니다.

+0

외부 URL로 리디렉션하는 방법을 알려주십시오. 최대한 빨리 응답 해주십시오. –

+0

업데이트를 확인하십시오. –

1

MapPageRoute은 WebForms 라우팅 (MSDN docs)에만 사용됩니다. 항상 MVC 응용 프로그램에서 MapRoute 확장을 사용했습니다.