2013-07-18 44 views
5

在我的C#Web应用程序中,我在一个解决方案中有两个不同的项目(“Project1”和“Project2”)。在“Project1”中,我有一个带有按钮的网页,并且在OnClick事件中,我尝试捕获会话变量并重定向到名为“Numbers.aspx”的“Project2”中的网页。我将“Project1”设置为包含“Project2”作为依赖项,“Project1”是启动项目。当我运行“PROJECT1”时,转到以下网址:在一个解决方案中重定向多个项目

http://localhost:5243/WebpageA.aspx 

当我设置“Project2的”为启动项目并运行它,它去到以下网址:

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; 
    } 

回答

3

要重定向,我建议增加在应用设置的设置,指定项目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”,或者其他方法,就可以(希望)轻松地连接它。


对于第二部分,传递一个会话变量,也许你可以将它作为查询字符串传递?重定向到目标网址加上"?Variable=" + Session["Variable"]。然后使用Session["Variable"] = Request.QueryString["Variable"];在项目2中提取它。


作为一个注脚:如果你打算在两个站点之间共享数据,我会考虑将它们设置为独立的文件夹/同一Web应用程序项目下的虚拟目录。

+0

非常好的答案。非常感谢您提供清晰彻底的解释!我非常感谢你的帮助! –

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

指PROJECT1的范围内为Number.aspx框架搜索。这意味着从Project1的根文件夹开始,搜索Numbers.aspx。

你需要做的是在IIS中为Project2创建一个虚拟目录,并给出路径的链接。

+1

谢谢你的帮助! –

相关问题