我已经查看了几个关于SO的帖子,这些帖子显示了如何为同一个服务添加多个端点,但是其中没有一个实际上是使用HTTPS,这就是我提出这个问题的原因。
我有什么
我有一个网络服务,
https://portal.gov.com/us/216/_vti_bin/external/gov.svc
我想要什么
我想使用两种不同的配置调用此Web服务,并使用不同的ENDPOINTS但是SAME URL绑定? (对不起,也许我对EndPoints的概念感到困惑)
这是我的web.config的样子,
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Gov_ServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="restBehavior">
<webHttp defaultBodyStyle="Wrapped" defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true" />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="Gov_webHttpBinding">
<security mode="Transport">
<transport clientCredentialType="InheritedFromHost" />
</security>
</binding>
</webHttpBinding>
<!--<basicHttpBinding>
<binding name="Gov_BasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="InheritedFromHost" />
</security>
</binding>
</basicHttpBinding>-->
</bindings>
<services>
<service name="Portal.WebServices.External.Gov" behaviorConfiguration="Gov_ServiceBehavior">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="restBehavior" contract="Portal.WebServices.External.IGov" bindingConfiguration="Gov_webHttpBinding"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
<!--<endpoint address="basic" binding="basicHttpBinding" contract="Portal.WebServices.External.IGov" bindingConfiguration="Gov_BasicHttpBinding"/>-->
</service>
</services>
</system.serviceModel>
</configuration>
痛苦在哪里
只有在我将basicHttpBinding注释掉它及其终点之后,IT才会有效,只要我加入它,我就会收到无声错误。
根据这个 - https://msdn.microsoft.com/en-us/library/ms751515(v=vs.110).aspx
它应该可以工作,但它可能不是因为我使用HTTPS并将BINDINGS标记添加到我的web.Config
答案 0 :(得分:0)
你想要达到的目标是不可能的。您不能将两个不同的绑定应用于完全相同的端点。如果您尝试再次阅读您的参考文献here,则很明显该样本有两个不同的端点:
第一个地址是http://localhost/servicemodelsamples/service.svc,第二个地址是http://localhost/servicemodelsamples/service.svc/secure 是http://localhost/servicemodelsamples/service.svc。这两个端点彼此不同,但共享相同的合同。
第二个端点只是相对于基地here。
我希望这能让你明白绑定和端点。