Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.NETMVC4中的路由_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# Asp.NETMVC4中的路由

C# Asp.NETMVC4中的路由,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在获取VirtualPath必须是以~/开头的非空字符串。错误 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:System.ArgumentException:VirtualPath必须是 以~/开头的非空字符串。参数名称:virtualPath 在以下代码中: public class RouteTableHelper { public static RouteCollection

我正在获取VirtualPath必须是以~/开头的非空字符串。错误

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息: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");
            .............
        }
   }
根据,第三个参数应该是一个虚拟url,包括应用程序root~。因此参数的名称为:physicalFile

比如:

routes.MapPageRoute( "catalogAnnualreport2013" // routeName
                   , "catalog/annualreport2013" // routeUrl
                   , "~/yourPage.aspx" // physicalFile
                   );
其中yourPage.aspx是您自己的ASP.NET aspx页面之一。你不能路由到外部url,比如你问题中的www.facebook.com


所有到外部源的重定向都需要通过控制器操作,或者在ASPX页面或ASHX处理程序中完成。

我认为MapPageRouteI仅用于WebForms路由。我一直在MVC应用程序中使用扩展。

路由不会扩展到您自己的站点。使用标准的MVC路由设置并执行控制器操作将用户重定向到Facebook是否更好

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

你不能路由到任意URL,它必须在你的网站内,如果你想转到其他网站,你必须进行重定向。你能告诉我如何重定向到外部URL吗?请尽快给出答复