将多租户项目发布到Azure时自定义web.config

时间:2013-04-24 16:09:23

标签: azure visual-studio-2012 web-deployment multi-tenant

我有一个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以容纳不同的租户?

2 个答案:

答案 0 :(得分:0)

我想通知你以下内容, 对于基于租户的配置,考虑在数据库中配置而不是复制Web.config文件是理想的。

如果您考虑使用纯形式的多租户,它使用单个代码库并维护由租户ID标识的数据库中的所有基于租户的配置,则无需复制或创建Web副本。配置文件。

此过程将如下所示,您从登录凭据中识别租户,然后使用该租户ID获取配置元数据,然后在整个应用程序中应用它们。

答案 1 :(得分:0)

我不确定这是一个特别优雅的解决方案,但最终我采用了两步发布流程。

在第一步中,我发布到本地文件系统,添加在CopyAllFilesToSingleFolderForPackage之后运行的自定义构建目标。在此目标中,我将打包文件复制到部署目录(每个站点1个),并在每个克隆上执行TransformXml以更改Web.config。

第二步是通过将<Site physicalDirectory="..." />指向克隆输出文件的位置,使用部署目录作为源发布到Azure。