MVC移动站点作为Webforms站点中的子域

时间:2014-02-04 09:35:16

标签: asp.net asp.net-mvc

我有一个现有的webforms项目,我想将新的MVC4(移动设备)网站添加到它,作为子域。我还希望它能够从webforms站点访问会话变量。想法是用户登录webforms站点,设置会话变量并重定向到移动站点(在子域上)。

最初我通过在根级别更改web.config,global.asax(用于路由等),控制器,视图和其他文件夹,将我的MVC站点添加到webforms站点。这允许我访问会话变量。但是,由于webforms站点已经完善(旧),因此更改web.config(最重要的是重新测试)会产生影响。因此需要一个子域。

将MVC网站的文件夹放入Webforms根目录是否容易,因此它有自己的web.config,并更改global.asax以路由到它(然后创建子域)?我仍然可以访问子域中的会话变量吗?

2 个答案:

答案 0 :(得分:0)

您可以为MVC移动设备创建一个新项目,在IIS中配置类似 m.mydomain.com 的域绑定。 在两者的web.config中,您定义了相同的主域:

<httpCookies domain=".mydomain.com"/>

这里启动difficoult任务,您需要注意在两个项目中共享相同的machineKey,并且可能需要根据所选的会话场景添加HttpModule。

看一下可以帮助您提供指导的article

答案 1 :(得分:0)

要分享会话,我是从Microsoft实现的。这是一个HttpModule。 http://support.microsoft.com/kb/2527105

还有一些额外的工作要做 - 我觉得这篇文章假设您对IIS有所了解。例如,我不得不使用IIS管理器手动添加模块。

我设法通过使用IIS管理器手动添加模块使其在IIS7中工作。

(打开IIS管理器 - &gt;选择应用程序 - &gt;点击模块(右上角) - &gt;点击“添加托管模块”添加SharedSessionModule。

Name: SharedSessionModule
Type: <namespace>.SharedSessionModule

(一个对话框说它无法找到装配,但在运行时它很好)

然后重启IIS。

当我提供非页面项目(如图像,.pdfs等)时,我遇到的问题是“会话状态在此上下文中不可用”。在我解决这个问题之前,我被要求使用我的初始方法(所以我还没有找到如何改变这一点但是在SO和其他网站上有很多建议。