【问题标题】:Redirection between two websites within one solution (ASP.NET + VS 2008 + IIS 5.1)在一个解决方案中实现两个网站之间的重定向(ASP.NET + VS 2008 + IIS 5.1)
【发布时间】:2010-12-19 17:00:06
【问题描述】:

我在一个 VS 解决方案中从一个 asp 网站重定向到另一个网站时遇到问题。 我已经设置了如下虚拟目录: C:\WebSites\Website1 - /Website1 C:\WebSites\Website2 - /Website2 我的起始网站是 Website1。我想将用户重定向到 Website2。我使用 Response.Redirect("/Website2/Default.aspx") 并得到 404 错误。 我究竟做错了什么? 任何建议都非常感谢! 提前谢谢你。

【问题讨论】:

    标签: asp.net visual-studio-2008 iis redirect


    【解决方案1】:

    假设当前页面是

       http://localhost/Website1/Default.aspx,
    

    如果你像这样进行重定向

       Response.Redirect("/Website2/Default.aspx")
    

    在那里,您要重定向的 URL 是

        http://localhost/Website1/WebSite2/Default.aspx
    

    不存在的。

    您必须重定向到完整的 URL 而不是相对 URL。

    类似的东西
    Response.Redirect("http://localhost/Website2/Default.aspx")

    希望对你有帮助

    【讨论】:

    • 感谢您的帖子。我尝试使用127.0.0.1/Survey/Default.aspx,它可以工作,但这不是我想要硬编码的东西。有没有可能使用虚拟路径?
    • 我会在配置文件的 appSetting 中添加一个密钥,其中包含另一个应用程序的服务器的 URL,并在部署下对其进行配置。像 和做 Response.Redirect(ConfigurationManager.AppSettings["otherServerURL"] + "Website2/Default.aspx" );也许这里有人可以给我们另一个答案。
    【解决方案2】:

    您始终可以从 HttpRequest.UrlHttpRequest.ServerVariables 对象中选择服务器名称。

    Response.Redirect(string.Format("http://{0}/WebSite2/default.aspx", 
                                    Request.Url.Host));
    

    或者

    Response.Redirect(string.Format("http://{0}/WebSite2/default.aspx", 
                                    Request.ServerVariables["HTTP_HOST"]));
    

    这将节省您在重定向中硬编码服务器名称。

    【讨论】:

      【解决方案3】:

      当您有两个虚拟目录时,如果它们被配置为自己的应用程序,那么它们各自的根被认为是根,您将不得不重定向到完整的 URL。

      【讨论】:

      • 感谢您的回复。我可以以不同方式重新配置应用程序以便能够使用虚拟路径吗?
      • 好吧,你可以试试 Response.Redirect("~/../Website2/Default.aspx"),但我不知道 ti 是否可行。
      猜你喜欢
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 2014-01-01
      • 2019-12-03
      • 2023-04-05
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多