我有一个现有的webforms项目,我想将新的MVC4(移动设备)网站添加到它,作为子域。我还希望它能够从webforms站点访问会话变量。想法是用户登录webforms站点,设置会话变量并重定向到移动站点(在子域上)。
最初我通过在根级别更改web.config,global.asax(用于路由等),控制器,视图和其他文件夹,将我的MVC站点添加到webforms站点。这允许我访问会话变量。但是,由于webforms站点已经完善(旧),因此更改web.config(最重要的是重新测试)会产生影响。因此需要一个子域。
将MVC网站的文件夹放入Webforms根目录是否容易,因此它有自己的web.config,并更改global.asax以路由到它(然后创建子域)?我仍然可以访问子域中的会话变量吗?
答案 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和其他网站上有很多建议。