1

我正在尝试使用带有自定义域的 https 公开 Azure 云服务,但出现错误:“请求的服务,'https://mydomain.net/myservice.svc' 无法激活。请参阅服务器的诊断跟踪日志以获取更多信息。”

关于自定义域:我已按照https://www.windowsazure.com/en-us/develop/net/common-tasks/custom-dns/#header-1中的步骤获取第二个选项“一条记录” “:在 Godaddy 的区域文件管理器中,我为“指向”myservice 的“公共虚拟 IP 地址”的“@”主机配置了一条 A 记录(如在 Azure 门户中找到)。在我看来,我得到“无法激活服务”的事实意味着 A 记录正在工作,但我不确定。

关于 https:我已经按照http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2011/06/how-to-get-and-install-ssl-certificate.html的步骤进行操作。简而言之:我使用我的开发机器上的 CSR 为 mydomain.net 从 godaddy 购买了一个证书,使用友好名称 mydomain.net 在我的开发机器上完成了 CSR,使用该文件将其导出到 mydomain.net.pfx,上传将证书添加到 Azure 中的云服务,并使用证书在 VS 中配置我的 WebRole,并将 Web 角色项目发布到 Azure。

在客户端(WP7):

<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpsBinding_IMyInterface" 
      maxBufferSize="2147483647"
      maxReceivedMessageSize="2147483647">
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint name="BasicHttpsBinding_IMyInterface"
    address="https://mydomain.net/myservice.svc" 
    contract="MyService.IMyInterface"       
    binding="basicHttpBinding"
    bindingConfiguration="BasicHttpsBinding_IMyInterface" />
</client>

注意:我没有使用 CName,因为我的证书不适用于子域,也不是通配符。

从我的搜索中,我得到的印象是这对其他人有用,我无法弄清楚我在做什么不同。

4

1 回答 1

0

是的 - 您需要在服务器配置中指定一个匹配的端点。以下是使用 HTTP 传输安全性的 WCF 服务的 web.config 文件的完整示例(来自http://msdn.microsoft.com/en-us/library/hh556232.aspx):

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="MySecureWCFService.Service1">
        <endpoint address=""
                  binding="basicHttpBinding"
                  bindingConfiguration="secureHttpBinding"
                  contract="MySecureWCFService.IService1"/>

        <endpoint address="mex"
                  binding="mexHttpsBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="secureHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>
于 2012-12-13T17:41:11.933 回答