当你运行Orchard的时候,通常一个网站运行在一个应用程序域中。这也是一般ASP.NET应用程序区分两个网站的方法,也就是说两个网站,就需要部署两套网站应用程序。然而,Orchard提供了另外一种区分两个网站的方法。在Orchard中引入了多站点的概念(multi-tenancy,直译为多租户,但我觉得翻译为多站点更贴切),允许你在一个ASP.NET应用程序域中同时运行多个站点。从内存使用率的角度来看这是非常有用的,因为应用程序域的初始化、卸载和回收都是非常消耗资源的。在一个单独的应用程序域中运行多个独立的Orchard网站,就可以在一台服务器上配置更多的站点。做为主机托管商无疑会十分青睐这种方式,这样可以大量节约成本。就一般主机空间的租赁用户来说,也可以在一个主机空间中部署多个站点,这样也能省钱。多站点的功能在Windows Azure环境中会表现的更好,因为部署到Azure中就可以轻松支持多个站点了。
启用多站点功能
默认多站点功能是没有启用的。要启用多站点功能,可以登录后台管理系统,点击Modules菜单,找到Hosting分类下的Multi Tenancy功能,点击Enable。
一旦多站点功能启用,你可以在后台管理系统中看见一个Tenants菜单(Tenants菜单只有在访问默认站点的时候才会出现,而通过子站点访问的时候就没有,这样就保证了只有默认站点的管理员才可以创建子站)。点击进入后可以看见一个Default站点,这是安装Orchard时默认创建的站点。你可以想象Default就像一个租户租了一整栋房子,当然你也可以把这栋房子租给更多的人。
添加一个站点
首先,你只会有一个单一的站点,这是默认的站点。

添加一个新的站点,可以点击“Add a Tenant”。

- 在添加站点页面,需要输入站点名称(名称不能包含空格)和站点域名。Orchard将通过用户访问的域名来映射到相应的网站。此外你还可以设置这个站点使用的数据库。共有三种选择:
- 允许站点自己设置数据库。
- 使用单独的SQL Server Compact数据库
- 使用已存在的SQL Server 数据库
当设置好以上属性后,点击“Save”,在站点列表中就可以查看到刚刚添加的站点了。

点击“Set Up”后将将跳转到Orchard安装页面。如果你不是选的“允许站点自己配置数据库”,将不会出现数据库的配置选项。
运行一个站点
每一个站点都可以有自己独有内容项目,启用不同的功能模块、使用不同的主题,进行独特的配置。不过,每一个站点可用的模块都是一样的。这是因为他们都共享同一个网站程序,所以可用模块也一样。在下面的截图中,展现了在不同的站点使用不同的主题的功能。

你也可以随时停用一个站点,只要在默认站点的Tenants菜单中点击“Suspend”就可以停用相应站点了。停用后也可以点击“Resume”随时启用相应的站点。

删除一个站点
目前,在界面上还没有提供删除站点的按钮。但是你可以在网站的App_Data/Sites目录下找到相应的站点名称同名的子目录,然后将其删除即可。你也可以先把这个目录备份到其他地方,这样如果你想恢复的时候就可以使用它了。
在本机测试多站点
如果你希望在本机配置多站点的功能,你首先需要修改一下本机的hosts文件。设置多个指向本机IP地址的域名。Hosts文件通常在 \Windows\System32\drivers\etc\hosts。
用记事本打开这个文件,添加以下记录。
127.0.0.1 t1.myhost.com
127.0.0.1 t2.myhost.com
其次你需要在IIS中绑定这些域名。以IIS 7为例,可以选择相应的Orchard站点,点击右键找到“编辑绑定”项,再网站绑定对话框中添加刚刚在hosts文件中增加的域名。

这样你就可以在此Orchard网站中使用新增的两个域名来创建两个新的站点了。
参考文档
==========================================
作者:二十四画生
转载请注明来源于博客园——二十四画生的Blog,并保留有原文链接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决