.net 在同一Azure WebRole上运行多个应用程序(云服务)

.net 在同一Azure WebRole上运行多个应用程序(云服务),.net,azure,asp.net-web-api,azure-web-roles,azure-cloud-services,.net,Azure,Asp.net Web Api,Azure Web Roles,Azure Cloud Services,我目前有一个具有web角色的Azure云服务(因此它是一个安装了IIS的虚拟机)。此web角色当前运行唯一的web应用程序(WebAPI项目) 我想做的是创建一个新的web应用程序,但我需要它在相同的web角色上运行(即在同一虚拟机上运行两个应用程序),以降低成本。我知道这是可能的(两个web应用程序都将运行在同一个IIS实例、同一台机器、不同的端口上),但我找不到有关如何使用最新版本的Azure SDK来实现这一点的资源 我发现了大量的资源: 但都有点老了(如果您可以将应用程序部署

我目前有一个具有web角色的Azure云服务(因此它是一个安装了IIS的虚拟机)。此web角色当前运行唯一的web应用程序(WebAPI项目)

我想做的是创建一个新的web应用程序,但我需要它在相同的web角色上运行(即在同一虚拟机上运行两个应用程序),以降低成本。我知道这是可能的(两个web应用程序都将运行在同一个IIS实例、同一台机器、不同的端口上),但我找不到有关如何使用最新版本的Azure SDK来实现这一点的资源

我发现了大量的资源:


但都有点老了(如果您可以将应用程序部署为Azure Web应用程序,我强烈推荐它。它的设计非常适合处理这种情况。您可以创建一个应用程序服务计划,包含所需的服务器实例数量,然后多个应用程序共享该组服务器。

我认为您的csdef文件更改和你可以跟踪ccproj的变化。所以不要再做第二个ProjectReference了,因为你在一天结束时只需要一个WebRole

您应该在ccproj文件中添加一行,如下所示:

<MSBuild Projects="..\MyProject2\MyProject2.csproj" ContinueOnError="false" Targets="PublishToFileSystem" Properties="Configuration=$(Configuration);PublishDestination=..\Publish\MyProject2\;AutoParameterizationWebConfigConnectionStrings=False" />
physicalDirectory看起来像

..\..\..\Publish\MyProject2
您的端点配置看起来正确,但如果无法远程访问角色,请确保您的csdef文件在端点中有一行:

    <Endpoints>
        <InputEndpoint name="MyProject1Endpoint" protocol="http" port="80" />
        <InputEndpoint name="MyProject2Endpoint" protocol="http" port="8080" />
    </Endpoints>

…具有与每个站点的端点名称相对应的“名称”:

    <Sites>
        <Site name="MyProject1Site" physicalDirectory="..\..\..\MyProject1">
            <Bindings>
                <Binding name="MyProject1Binding" endpointName="MyProject1Endpoint" />
            </Bindings>
        </Site>
        <Site name="MyProject2Site" physicalDirectory="..\..\..\Publish\MyProject2">
            <Bindings>
                <Binding name="MyProject2Binding" endpointName="MyProject2Endpoint" />
            </Bindings>
        </Site>
    </Sites>


假设您希望每个站点在其承载的同一端口上公开访问。如果出于某种原因,MyProject2在端口8081上本地运行,您需要添加
localPort=“8081”
到该输入点。

不幸的是,我无法轻松更改应用程序的构建方式,因此我必须坚持使用云服务。尽管如此,我确信有一个解决方案(因为web角色是一个简单的虚拟机,其中包含IIS)谢谢,这让我走上了正确的道路(我认为)。我仍然需要解决一些问题,但听起来很有希望。我成功地将我的两个应用程序部署在同一个web角色上。不幸的是,只有一个应用程序可以通过Internet访问(我尝试访问另一个应用程序时超时)。我已远程连接到VM(使用RDP),我可以看到两个应用程序都已正确部署/运行,甚至都可以在本地访问。因此,我假设一个应用程序在通过Internet访问时没有响应,存在一些网络配置问题。知道吗?ThanksA可以在本地访问但不能远程访问的角色听起来必须是一个端点配置问题。原始问题中的端点配置看起来正确,但我在回答中添加了一些示例配置行。希望有帮助!谢谢,但我已仔细检查了绑定,没有发现任何问题。我已使用当前版本编辑了问题,我终于找到了问题:尝试联系时的一个简单输入错误web应用程序…所有这些都很好。我对ccproj所做的精确修改如下:再次感谢
..\Publish\MyProject2\ 
..\..\..\Publish\MyProject2
    <Endpoints>
        <InputEndpoint name="MyProject1Endpoint" protocol="http" port="80" />
        <InputEndpoint name="MyProject2Endpoint" protocol="http" port="8080" />
    </Endpoints>
    <Sites>
        <Site name="MyProject1Site" physicalDirectory="..\..\..\MyProject1">
            <Bindings>
                <Binding name="MyProject1Binding" endpointName="MyProject1Endpoint" />
            </Bindings>
        </Site>
        <Site name="MyProject2Site" physicalDirectory="..\..\..\Publish\MyProject2">
            <Bindings>
                <Binding name="MyProject2Binding" endpointName="MyProject2Endpoint" />
            </Bindings>
        </Site>
    </Sites>