例如,发布到一个虚拟目录AAA,用http://localhost/AAA/default.aspx访问首页,
重定向到同目录的页面test.aspx,代码是response.redirect(Request.ApplicationPath+"/test.aspx");但如果发布到一个新的站点,用http://localhost:8080/default.aspx访问首页,以上的重定向代码就有问题了。因为不确定以后的发布方式,所以要兼容这两种方式。请问重定向的代码该怎么写?

解决方案 »

  1.   

    a little odd, where did it redirect to?try to use 
    Response.redirect("/test.aspx")or you can check Request.Url.Port to see if it is not 80, then add the host/port/...
      

  2.   

    sorry, 同目录的页面:Response.Redirect("test.aspx")
      

  3.   

    用相对路径response.redirect("test.aspx");
    或参考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
      

  4.   

    我在网上下载了一些ASP.NET的源代码,都是WEB应用程序的,可是下载后想打开运行一下,看看效果,可是怎么也打不开,老是提示说:无法打开web项目,位于服务器http://localhost/上的web不存在,请问如何配置啊?那位好心人帮帮我吧,我只是想参照着源代码学习.net,能把配置的操作步骤写的具体一点最好了,小的感激不尽!
    (我自己新建的web应用程序都可以用,就是下载下来的不能打开!IIS和.net框架全都有)
      

  5.   

    to : bj_niuniu(牛牛) 用记事本打开项目文件,就是 *.sln 的文件那里记着各项目的配置找到 web 项目,看看它是在所在的虚拟目录的名字然后把你本地的 web 项目文件夹虚拟成那个目录
      

  6.   

    谢谢: wlzbaby(没病真好) 
    为你加油!