WCF服务多端点配置

时间:2011-06-21 12:31:24

标签: c# asp.net wcf .net-3.5

我有一个WCF服务:

https://myservice/service.svc
https://myservice/service.svc?wsdl

以下是我的WCF应用程序的web.config的相关部分(如果您需要更多,请告诉我):

<bindings>
 <basicHttpBinding>
  <binding name="basicHttp">
  <security mode="TransportWithMessageCredential">
    <message clientCredentialType="UserName"/>
  </security>
  </binding>
 </basicHttpBinding>
</bindings>

<behaviors>
 <serviceBehaviors>
  <behavior name="MyService.ServiceBehavior">
  <serviceMetadata httpsGetEnabled="true"/>
  <serviceDebug includeExceptionDetailInFaults="true"/>
  <serviceCredentials>
    <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="SqlMembershipProvider"/>
  </serviceCredentials>
  <serviceThrottling maxConcurrentCalls="100" maxConcurrentInstances="100" maxConcurrentSessions="100"></serviceThrottling>
  </behavior>
 </serviceBehaviors>
</behaviors>

<services>
 <service behaviorConfiguration="MyService.ServiceBehavior" name="MyService.Service">
  <endpoint address="/ClientA" binding="basicHttpBinding" bindingConfiguration="basicHttp" name="basicHttpEndpoint" contract="MyService.IService"></endpoint>
  <endpoint address="/ClientB" binding="basicHttpBinding" bindingConfiguration="basicHttp" name="basicHttpEndpoint" contract="MyService.IService"></endpoint>
  <endpoint address="/ClientC" binding="basicHttpBinding" bindingConfiguration="basicHttp" name="basicHttpEndpoint" contract="MyService.IService"></endpoint>
  <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
 </service>
</services>

我希望我的客户能够通过以下链接访问该服务,但链接不起作用:(或者我的语法可能对下面的链接有误,如果是这样,请告诉我)

https://myservice/service.svc/ClientA
https://myservice/service.svc/ClientB
https://myservice/service.svc/ClientC

以下链接有效,但我不认为这是由于我的配置,好像我在最后一次正斜线后写了任何东西它仍然可以工作....

https://myservice/service.svc?wsdl/ClientA
https://myservice/service.svc?wsdl/ClientB
https://myservice/service.svc?wsdl/ClientC

https://myservice/service.svc?wsdl/asfgvafgfgf ... (this works too !!!)

请告诉我如何实现这一目标。我不想为所有客户创建单独的服务。

如果这样做,我想在所有客户端的端点定义中使用不同的contract =“MyService.IService”,因为服务中公开的每个客户端的方法会有所不同。

我还想问一下,我是否可以指定要使用哪个连接字符串,具体取决于哪个端点客户端正在访问该服务?

最后:我不想要:

https://myservice/service.svc
https://myservice/service.svc?wsdl

要访问的链接,我希望客户端只使用他们指定的链接......

是可能的,或者我应该为每个客户创建单独的服务......?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为它需要在配置文件中进行一些设置。

请参阅此链接

http://keyvan.io/host-wcf-service-and-asp-net-application-on-same-virtual-directory

这可能对你有帮助。