【发布时间】:2016-02-21 23:18:13
【问题描述】:
我目前有一个带有 Web 角色的 Azure 云服务(所以它是一个安装了 IIS 的虚拟机)。此 Web 角色当前运行一个独特的 Web 应用程序(WebAPI 项目)。
我想做的是创建一个新的 Web 应用程序,但我需要它在同一个 Web 角色上运行(即同一虚拟机上的两个应用程序)以降低成本。我知道这是可能的(然后,两个 Web 应用程序将在同一个 IIS 实例上、在同一台机器上、使用不同的端口上运行)但我找不到有关如何使用最新版本的 Azure SDK 的资源。
我找到了很棒的资源:
- Multiple site strategy on web role(s) and cloud service(s)
- https://michaelcollier.wordpress.com/2013/01/14/multiple-sites-in-a-web-role/
- http://www.wadewegner.com/2011/02/running-multiple-websites-in-a-windows-azure-web-role/
- http://blog.elastacloud.com/2011/01/11/azure-running-multiple-web-sites-in-a-single-webrole/
但都有些旧(
我目前使用的是 Azure SDK 2.6。我尝试修改我的 ccproj 文件(云服务项目文件),以便两个 WebAPI 项目共享相同的RoleName:
<ProjectReference Include="..\MyProject1.csproj">
<Name>Website</Name>
<Project>{...}</Project>
<Private>True</Private>
<RoleType>Web</RoleType>
<RoleName>MyRole</RoleName>
</ProjectReference>
<ProjectReference Include="..\MyProject2.csproj">
<Name>Website</Name>
<Project>{...}</Project>
<Private>True</Private>
<RoleType>Web</RoleType>
<RoleName>MyRole</RoleName>
</ProjectReference>
这不起作用,我在 Visual Studio 中项目的“角色”节点显示错误 ("no project associated [project 2 name])。
我也尝试修改我的ServiceDefinition.csdef 文件:
<WebRole name="xxxx.Frontend.Azure" vmsize="Small">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
<Site name="AnotherWeb" physicalDirectory="foo">
<Bindings>
<Binding name="Endpoint2" endpointName="Endpoint2" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="8080" />
<InputEndpoint name="Endpoint2" protocol="http" port="8090" />
</Endpoints>
</WebRole>
也没有运气。
我应该如何进行?
编辑:
这是我当前的 csdef 文件,修改后支持多站点:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="AzureCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WebRole name="XXX.YYY" vmsize="Small">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
<Imports>
<Import moduleName="RemoteAccess" />
</Imports>
</WebRole>
<WebRole name="XXX.ZZZ" vmsize="Small">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
<Site name="ZZZ" physicalDirectory="..\..\..\XXX.ZZZ\azure.publish">
<Bindings>
<Binding name="Endpoint2" endpointName="Endpoint2" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="8081" />
<InputEndpoint name="Endpoint2" protocol="http" port="8090" />
</Endpoints>
<Imports>
<Import moduleName="RemoteAccess" />
</Imports>
</WebRole>
</ServiceDefinition>
【问题讨论】:
标签: .net azure asp.net-web-api azure-web-roles azure-cloud-services