2

我有一个 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 部署到每个站点以适应不同的租户?

4

2 回答 2

0

我想通知您以下内容,当涉及到基于租户的配置时,最好考虑将配置放在数据库中,而不是复制 Web.config 文件。

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

该过程将是这样的,您从登录凭据中识别租户,然后使用该租户 ID 获取配置元数据,然后在整个应用程序中应用它们。

于 2013-05-04T11:34:39.187 回答
0

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

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

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

于 2013-05-14T15:41:39.553 回答