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

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

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

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>

最佳答案 这里发布了同样的问题:

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

点赞