我是否可以通过localhost/subscribe
内的规则将访问localhost/subscribe.aspx
的所有人重定向到global.asax.cs
,还是应该从操作重定向?
答案 0 :(得分:9)
以下代码应该适合您:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (Request.RawUrl.ToLower().EndsWith("subscribe"))
{
Response.Redirect("subscribe.aspx");
}
}
或者在 Application_PreRequestHandlerExecute 方法中,如果您还要使用会话进行验证
答案 1 :(得分:3)
但是对于一个网址,最简单的解决方案可能是从操作重定向。
答案 2 :(得分:2)
如果要将虚拟URL重定向到物理文件,在Global.asax中执行此操作非常容易:
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
RouteTable.Routes.MapPageRoute("Key", "Home", "~/Public/Pages/Default.aspx");
}
在这种情况下,
重定向到
只是一个FYI,执行此操作不会在客户端上重定向,它会在服务器上重定向,这意味着服务器不会返回带有新地址的302,它只是将您指向的内容发送回去
这对于添加变量也很有意义,例如:
routes.MapPageRoute("MainPublic3", "Public/Pages/{PAGE}/{CHILD}", "~/Public/Pages/Pages.aspx");
然后可以在后面的代码中访问它们,如下所示:
string page = Page.RouteData.Values["PAGE"];
string child = Page.RouteData.Values["CHILD"];
我们将它用于我工作的所有事情,当然我们正在转向MVC:)