我有一个VS2012解决方案,其中包含一个多租户MVC Web项目,我想在一个Azure Web角色上发布到多个网站。我已更改.csdef
,因此它包含多个网站,如下所示:
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
<Site name="Web2" physicalDirectory="..\..\..\[source dir]">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="secondsite.com" />
</Bindings>
</Site>
</Sites>
我的问题是:作为发布流程的一部分,我如何为每个站点部署不同版本的Web.config以容纳不同的租户?
答案 0 :(得分:0)
我想通知你以下内容, 对于基于租户的配置,考虑在数据库中配置而不是复制Web.config文件是理想的。
如果您考虑使用纯形式的多租户,它使用单个代码库并维护由租户ID标识的数据库中的所有基于租户的配置,则无需复制或创建Web副本。配置文件。
此过程将如下所示,您从登录凭据中识别租户,然后使用该租户ID获取配置元数据,然后在整个应用程序中应用它们。
答案 1 :(得分:0)
我不确定这是一个特别优雅的解决方案,但最终我采用了两步发布流程。
在第一步中,我发布到本地文件系统,添加在CopyAllFilesToSingleFolderForPackage
之后运行的自定义构建目标。在此目标中,我将打包文件复制到部署目录(每个站点1个),并在每个克隆上执行TransformXml
以更改Web.config。
第二步是通过将<Site physicalDirectory="..." />
指向克隆输出文件的位置,使用部署目录作为源发布到Azure。