例如,发布到一个虚拟目录AAA,用http://localhost/AAA/default.aspx访问首页,
重定向到同目录的页面test.aspx,代码是response.redirect(Request.ApplicationPath+"/test.aspx");但如果发布到一个新的站点,用http://localhost:8080/default.aspx访问首页,以上的重定向代码就有问题了。因为不确定以后的发布方式,所以要兼容这两种方式。请问重定向的代码该怎么写?
重定向到同目录的页面test.aspx,代码是response.redirect(Request.ApplicationPath+"/test.aspx");但如果发布到一个新的站点,用http://localhost:8080/default.aspx访问首页,以上的重定向代码就有问题了。因为不确定以后的发布方式,所以要兼容这两种方式。请问重定向的代码该怎么写?
Response.redirect("/test.aspx")or you can check Request.Url.Port to see if it is not 80, then add the host/port/...
或参考Duwamish的方法
在项目根下置一PageBase类,包含如下静态方法 public static String UrlBase
{
get
{
return @"http://" + UrlSuffix;
}
}private static string UrlSuffix
{
get
{
return System.Web.HttpContext.Current.Request.Url.Host + System.Web.HttpContext.Current.Request.ApplicationPath;
}
}在你的例子里就可以Response.Redirect(PageBase.UrlBase+"/test.aspx");//C#写法这样PageBase.UrlBase这个静态方法,无论在哪,都会得到站点的绝对根Url
也就是例一里会得到http://localhost/AAA
例二里会得到 http://localhost:8080
(我自己新建的web应用程序都可以用,就是下载下来的不能打开!IIS和.net框架全都有)
为你加油!