我使用WsHttpBinding创建了一个WCF服务,具有2个绑定配置(这是2个不同客户端的要求)。一个客户端希望该服务具有Message client安全模式,clientCredential为“Windows”,另一个客户端希望该服务具有TransportCredentialType为“Certificate”的传输安全模式。我能够浏览我的Client2服务但无法浏览我的client1。 这是我的带有2个绑定的web.config:
<system.serviceModel>
<services>
<service name="TestService.TestService" behaviorConfiguration="mexBehavior">
<endpoint address="Client1" binding="wsHttpBinding" contract="TestService.ITestService" bindingConfiguration="TestService_Client1_ITestService" >
<identity>
<dns value="" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<endpoint address="Client2" binding="wsHttpBinding" contract="TestService.ITestService" bindingConfiguration="TestService_Client2_ITestService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehavior">
<useRequestHeadersForMetadataAddress />
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="TestService_Client1_ITestService">
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
<binding name="TestService_Client2_ITestService">
<security mode="Transport">
<!--<transport clientCredentialType="None" />-->
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
以下是我在IIS中所做的设置:
1)创建了一个新网站“TestService”
2)在绑定中: a)使用端口:444添加https并选择适当的证书 b)使用port:90
添加http3)在IIS TestService功能视图中 - &gt; SSL设置 - &gt;要求SSL(已启用),接受并应用
4)身份验证 - &gt;表单身份验证,Windows,匿名启用
请建议我应该对配置或IIS做出哪些更改,以便我有两个终点工作...
此外,我将端点命名为Client1和Client2,假设我应该能够将它们浏览为
a)http://localhost:90/TestService.svc/Client1
b)https://localhost:444/TestService.svc/Client2
目前,我可以用
浏览我的服务(client2)
https://localhost:444/TestService.svc/
如果我在最后添加Client2,则无法正常工作。我不确定我的端点地址名称是否正常工作。
由于
答案 0 :(得分:0)
在做了一些研究后,我得到了两个终点工作..在IIS步骤中,
3)在IIS TestService功能视图中 - &gt; SSL设置 - &gt;取消选中需要SSL(取消选中此),但选中(接受)并选择应用
这对我来说很有把握,我能够让两个终点都有效。
另外,在我的问题中,我误解了能够浏览两个端点:
a)http://localhost:90/TestService.svc/Client1
b)https://localhost:444/TestService.svc/Client2
实际上,我们无法浏览,这种表示法在创建客户端时很有用,可以使用端点名称或基于端点配置实例化