在一个解决方案中重定向多个项目

5
在我的 C# 网页应用程序中,有一个解决方案里有两个不同的项目(“Project1” 和 “Project2”)。在 “Project1” 中,我有一个带有按钮的网页,在 OnClick 事件中,我试图捕获一个会话变量并重定向到 “Project2” 中名为 “Numbers.aspx” 的网页。我将 “Project2” 设为 “Project1”的依赖项,并将 “Project1” 设为启动项目。当我运行 “Project1” 时,它会跳转到以下 URL:
http://localhost:5243/WebpageA.aspx

当我将“Project2”设置为启动项目并运行它时,它会转到以下URL:
http://localhost:5571/Numbers.aspx

在“Project1”中,当我写下以下内容时:
Response.Redirect("~/Numbers.aspx");

它说路径无效。我还尝试了以下路径,但它说不存在:

 Response.Redirect("~/Project2/Numbers.aspx");

有没有人有建议,我如何在不同的项目中重定向到此网页并捕获来自Project1的会话变量?谢谢!

   //OnClick event
    protected void click(object sender, EventArgs e)
    {
        Session["Variable"] = textBoxName.Text;
    }
2个回答

4
为实现重定向功能,建议在您的应用程序设置中添加一个选项,用于指定Project 2的主机地址:
<appSettings>
    <add key="Project2Host" value="localhost:5571/" />
</appSettings>

现在针对重定向,你可以编写以下代码:
Response.Redirect(Request.Url.Scheme + "://" 
    + ConfigurationManager.AppSettings["Project2Host"] 
    + "Numbers.aspx");

那么,当部署到服务器时,您可以通过简单地将web.config中的"Project2Host"设置更改为"MyServer.com/Project2"(或其他内容)来轻松地进行连接。
对于第二部分,传输会话变量,也许您可以将其作为查询字符串传递?重定向到目标URL加上 "?Variable=" + Session["Variable"]。然后在Project 2中使用Session["Variable"] = Request.QueryString["Variable"];来获取它。
作为注脚:如果您计划在两个站点之间共享数据,请考虑将它们设置为同一Web应用程序项目下的不同文件夹/虚拟目录。

哇,非常棒的回答。非常感谢您清晰、详尽的解释!我真的很感激您的帮助! - Jodh Abdiulu

1
Response.Redirect("~/Numbers.aspx") 

这意味着该框架在项目1的范围内搜索Number.aspx。它意味着从Project1的根文件夹开始,搜索Numbers.aspx。

您需要在IIS中为Project2创建一个虚拟目录,并提供路径的链接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接