Web services 使用basicHttpsBinding通过http和https使WCF Web服务可用
我试图通过http和https提供我的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;种类:;端点配置:;' 现在,这是一个明显的错误,但我不知道如
同一配置范围中已存在名为“endpoint”且具有相同密钥的子元素。集合元素在相同的配置范围内必须是唯一的(例如,相同的application.config文件)。重复的键值:'地址:;绑定配置;绑定名称:;bindingNamespace:;bindingSectionName:basicHttpsBinding;合同类型:RestService.Iservice;种类:;端点配置:;'代码>
现在,这是一个明显的错误,但我不知道如何更改配置以支持同一合同上的http和https请求。
请注意,我希望使用WCF4.5basicHttpsBinding
配置
以下是我的配置:
<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提供…有任何示例可以说明我如何做到这一点吗?