Web services 使用basicHttpsBinding通过http和https使WCF Web服务可用

Web services 使用basicHttpsBinding通过http和https使WCF Web服务可用,web-services,wcf,http,https,Web Services,Wcf,Http,Https,我试图通过http和https提供我的Web服务,但遇到以下错误: 同一配置范围中已存在名为“endpoint”且具有相同密钥的子元素。集合元素在相同的配置范围内必须是唯一的(例如,相同的application.config文件)。重复的键值:'地址:;绑定配置;绑定名称:;bindingNamespace:;bindingSectionName:basicHttpsBinding;合同类型:RestService.Iservice;种类:;端点配置:;' 现在,这是一个明显的错误,但我不知道如

我试图通过http和https提供我的Web服务,但遇到以下错误:

同一配置范围中已存在名为“endpoint”且具有相同密钥的子元素。集合元素在相同的配置范围内必须是唯一的(例如,相同的application.config文件)。重复的键值:'地址:;绑定配置;绑定名称:;bindingNamespace:;bindingSectionName:basicHttpsBinding;合同类型:RestService.Iservice;种类:;端点配置:;'

现在,这是一个明显的错误,但我不知道如何更改配置以支持同一合同上的http和https请求。 请注意,我希望使用WCF4.5
basicHttpsBinding
配置

以下是我的配置:

  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="RestService.service">
<!--
        <host>
          <baseAddresses>
            <add baseAddress = "http://www.nl/service.svc/" />
            <add baseAddress = "https://www.nl/service.svc/" />
          </baseAddresses>
        </host>       
-->
        <endpoint binding="webHttpBinding" contract="RestService.Iservice" />
        <endpoint binding="webHttpBinding" address="" bindingConfiguration="webHttpBindingWithJsonP" name="RestService.Iservice" contract="RestService.Iservice">
        </endpoint>

        <endpoint binding="basicHttpsBinding" contract="RestService.Iservice" />
        <endpoint binding="basicHttpsBinding" address="" name="RestService.Iservice" contract="RestService.Iservice">    
        </endpoint>

      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true">
        </binding>
      </webHttpBinding>
      <basicHttpsBinding>
        <binding name="webHttpsBindingWithJsonP">
          <security mode="Transport"></security>
        </binding>
      </basicHttpsBinding>
    </bindings>
    <behaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webHttp">
          <webHttp />
        </behavior>
        <behavior name="webHttpBehavior">
          <webHttp />
        </behavior>

      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>

在端点中,需要将Json端点的绑定设置为webHttpBinding,而不是basicHttpBinding。对于安全端点,您需要添加绑定配置并将安全模式设置为传输

另外,请为web/basic端点设置地址。我很确定你不能用同一个地址使用这两个绑定


最后,由于您托管在IIS下,因此可以删除baseAddress部分,因为它不是必需的。并确保您在IIS中的网站已配置为支持http和https协议(通过IIS管理器中的网站绑定对话框进行检查)

好的,谢谢!我已经完成了你的建议1和3(根据你的建议更新了我的帖子)。但不确定如何执行您的第二个建议:“请为web/基本端点设置地址”我希望该服务可以通过http和https提供…有任何示例可以说明我如何做到这一点吗?