2

我一直在尝试创建一个简单的服务,以允许通过 WCF 将消息登录到远程服务器,在我将服务发布到使用 HTTPS 的实时环境之前,这一切都运行良好。

经过一番搜索,我发现我需要更改我的 ServiceConfig 以适应不同的协议。我结合使用了这两篇文章:

  1. 如何配置 WCF 服务以在没有 HTTP 绑定的情况下通过 HTTPS 工作?
  2. HTTPS 所需的 WCF 绑定

对我的配置进行了建议的更改后,我似乎处于可以将实时服务添加为 VS2010 中的 WCF 引用的状态,但是当我使用 IE 浏览到服务或 mex 地址时,我一直收到“HTTP 400 错误请求”错误。

在使用该服务方面,我似乎可以成功运行它,但 mex 只是不想通过 IE 工作。

服务本身托管在运行 IIS 6.0 且没有负载平衡的 Windows Server 2003 R2 Standard Edition SP2 上。

在这一点上我真的很茫然,我花了 3-4 天的时间来解决这个问题,但我似乎无法取得任何进展。因此,任何帮助将不胜感激。

请参阅下面有问题的服务器服务配置:

  <system.serviceModel> 
    <services>
      <service name="mycorp.Callback.SecPayService" behaviorConfiguration="mycorp.Callback.SecPayServiceBehavior">
         <endpoint address="https://myserver.co.uk/SecPay/SecPayService.svc"
                   binding="wsHttpBinding" bindingConfiguration="TransportBinding" 
                   contract="mycorp.Callback.ISecPayService"/>      
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />        
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mycorp.Callback.SecPayServiceBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="TransportBinding">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
4

1 回答 1

2

如果您在 IIS 中托管服务,则只需将端点元素地址值设置为空字符串,因为端点的地址由 IIS 分配

于 2012-04-13T16:06:02.283 回答