目标:这一切都是为了支付一个 WebRole 实例的费用,但演示/测试多个站点,这些站点是完全独立的 VS 项目(ASP MVC 5,但这一定不重要)。站点不是通过端口号而是通过域名(主机)名称来区分的)
也许我想要的太多,但这可以通过使用 IIS 通过主机名(或 IP 或端口)配置 IIS 站点来轻松完成。
我理解(并且可以接受)该限制,即这些不同的 VS 项目必须一起存在于 VS 解决方案中,并且不能独立部署,我认为存在一个包含所有配置的通用 Azure 项目元信息。
工具:VS 2013(高级)和 Azure 工具 2.2
现在我有一个包含 2 个项目的解决方案: MySite(一个 ASP MVC 5 项目) MySite.Azure
我想添加第二个 MVC 项目,并想修改 MySite.Azure 中的配置和其他文件以部署 MySite 和 MySite2,并且我想为 MySite 和 MySite2 分配不同的主机名。 (我确实知道如何使用 DNS 提供商将我的主机名分配给我的 Azure IP,请假设这已经完成)
<小时/>如果无法通过主机名区分,是否还可以通过端口号区分?
最佳答案
从头开始
您不需要将所有项目都放在一个解决方案中,但这确实会让事情变得更容易,所以我假设您在这个阶段会这样做。
将您的第二个项目添加到您的解决方案中。
在 Azure 项目 (MySite.Azure) 的“角色”文件夹上,右键单击并按“添加”>“解决方案中的 Web 角色项目”,然后将其他项目添加到您的 Azure 项目中。
下一步在 ServiceDefinition.csdef 部分中
<Site>
<Site name="Site1" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project1">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain1.com" />
<Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain1.com" />
</Bindings>
</Site>
<Site name="Site2" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project2">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain2.com" />
<Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain2.com" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
<InputEndpoint name="Endpoint2" protocol="https" port="443" certificate="SSLName" />
</Endpoints>
这还显示了 2 个用于 SSL 使用的端点。
关于azure - 一个 Azure WebRole 中的多个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796881/