Azure SDK 1.8将多个Web角色绑定到本地仿真器上的同一端口

时间:2012-12-07 10:52:44

标签: azure azure-web-roles azure-sdk-.net

将azure SDK更新为1.8后,我无法正常运行我们的项目。看起来本地模拟器使用相同的端口号以错误的方式创建IIS应用程序。如果我只创建一个具有5个Web角色的新云项目,然后在Azure项目属性中设置使用IIS Web服务器,则可以重现该问题 Azure project properties

运行应用程序后,IIS显示大多数都已停止,因为已在使用相同的端口。所有这些都使用8085端口,必须分配给最后一个应用程序

enter image description here

enter image description here

Bug报告给微软: http://connect.microsoft.com/VisualStudio/feedback/details/773786/azure-sdk-1-8-binds-several-web-roles-to-the-same-port-on-local-emulator#details

默认的Visual Studio服务配置,它不适用于SDK 1.8

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WindowsAzure1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WebRole name="WebRole1" 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="Diagnostics" />
    </Imports>
  </WebRole>
  <WebRole name="WebRole2" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="8080" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
  <WebRole name="WebRole3" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="8081" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
  <WebRole name="WebRole4" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="8082" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
  <WebRole name="WebRole5" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="8083" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>

2 个答案:

答案 0 :(得分:2)

此处发布了同样的问题: Only one instance works with Azure October 2012 SDK on IIS7.5

我使用相同的设置遇到了这个,尝试了所有逻辑解决,搜索网络......没有。我不明白这是怎么回事。相同的项目在旧版本的Azure模拟器上运行良好。谢谢MS。


更新:我在建议的注册表黑客攻击后解决了我的问题:

Strange behavior of Windows Azure Compute Emulator (SDK 1.8) with multiple role instances on a clean machine with VS2012 but WITHOUT VS2010

似乎问题是模拟器混淆选择VS2010与VS2012的设置。在我的情况下,我安装了2010和2012,但即使仅使用2012年的全新安装,它似乎也会对您产生影响。

Microsoft.WindowsAzure.Common.Workarounds.TryGetVS2010SPVersion(仅限名称)看起来像一个黑客,它需要一个额外的注册黑客来解决它。再次感谢MS。 :)

任何有此问题的人,请填写此连接错误以便MS修复: https://connect.microsoft.com/VisualStudio/feedback/details/773786/azure-sdk-1-8-binds-several-web-roles-to-the-same-port-on-local-emulator

答案 1 :(得分:0)

您是否在云项目中的每个角色上设置了不同的端点?如果不是,我希望能解决问题。以下是有关如何执行此操作的基本博客文章:

http://robindotnet.wordpress.com/2012/07/02/how-to-set-up-an-https-endpoint-for-a-windows-azure-web-role/