我收到"VirtualPath must be a non-empty string starting with ~/."
错误
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.ArgumentException:VirtualPath必须是a 以〜/开头的非空字符串。参数名称: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");
.............
}
}
答案 0 :(得分:3)
根据MSDN,第三个参数应该是虚拟URL(包括应用程序根~
)。因此参数的名称为:physicalFile
。
类似的东西:
routes.MapPageRoute( "catalogAnnualreport2013" // routeName
, "catalog/annualreport2013" // routeUrl
, "~/yourPage.aspx" // physicalFile
);
其中yourPage.aspx
是您自己的ASP.NET ASPX页面之一。您无法在问题中路由到外部网址,例如www.facebook.com
。
所有重定向到外部源都需要从Controller操作(使用Controller.Redirect
)或ASPX页面或ASHX处理程序中的Response.Redirect
完成。
答案 1 :(得分:2)
路由不会超出您自己的网站。可能最好使用标准MVC路由设置并制作控制器动作,将用户重定向到Facebook?
public class CatalogController:Controller
{
public ActionResult Annualreport2013()
{
return Redirect("http://www.facebook.com");
}
}
答案 2 :(得分:1)