3

我有一个最终看起来像这样的解决方案:

http://www.test.com - 公共营销网站(80 端口)

https://www.test.com - 用于经过身份验证的用户的 MVC Web 应用程序(端口 443)

https://api.test.com - 所有客户端都将使用的 WebAPI 层(希望是 443 端口)

最初该应用程序将是一个 MVC 网站,但我们也计划为 Windows Phone、Windows 8 等开发原生客户端。所有客户端,包括 MVC 应用程序网站,都将使用 WebAPI 服务层进行数据操作。所有客户端也将利用可移植类库。

我注册了两个 SSL 证书。一个用于 www.test.com,一个用于 api.test.com。

当我配置角色(WebRole.Public、WebRole.Application 和 WebRole.WebAPI)时,我被告知端口 443 已分配给另一个 WebRole(在本例中为应用程序 WebRole),我需要使用下一个可用端口,即 8443 .

我担心的是,如果我使用端口 8443,它对防火墙不友好,这意味着未来的客户端(Windows Phone、Win8 等)如果不打开防火墙将无法工作。我真的很想在应用程序和 webapi WebRoles 上都使用 443。

如果我设置多个 Azure 项目以允许在 WebRole.WebAPI 和 WebRole.Application 上使用端口 443,是否可以在本地调试?

推荐的解决方案配置是什么?我们正在使用 Visual Studio 2013。

4

2 回答 2

2

如果您想为同一服务上的两个站点使用相同的端口,您只需要一个角色并使用两个站点设置它并为第二个站点设置一个主机头(在您的情况下,我建议使用 api.test .com)。MSDN 上有完整的文档。所以你的服务定义应该是这样的:

<WebRole name="Test" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="HttpInput" />
          <Binding name="Endpoint1" endpointName="HttpsInput" />
        </Bindings>
      </Site>
      <Site name="Api" physicalDirectory="[Relative Path to Published API">
        <Bindings>
          <Binding name="ApiEndpoint" endpointName="HttpsInput" hostHeader="api.test.com" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="HttpInput" protocol="http" port="80" />
      <InputEndpoint name="HttpsInput" protocol="https" port="443" certificate="SSL" />
    </Endpoints>
于 2013-08-27T21:12:59.347 回答
0

您可以获得通配符 SSL 证书,它适用于子域。您正在尝试为同一个端口注册两个证书。这不是一个好的配置。

如果您不想购买通配符证书,您可以在 MVC 应用程序中调用您的 webapi 服务并将其托管在不同的域中。要在本地调试应用程序,您可以使用 developer express 证书(您自己批准)并定义要连接的端口。

于 2013-08-27T19:15:38.327 回答