简体   繁体   中英

WCF Service multiple endpoint configuration

I have a WCF service:

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

Given below are the related section of my WCF Application's web.config (let me know if you need more):

<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>

I want my clients be able to access the service through the following links, but the links don't work: (or may be my syntax is wrong for the links below, let me know if that is the case)

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

following links work, but i don't think this is due to my configuration, as if i write anything after the last forward slash it still works ....

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 !!!)

Please let me know how to achieve this. I don't want to create separate service for all clients.

if this works, i want to use different contract="MyService.IService" in the endpoint definition for all clients, as the methods for each clients exposed in service would differ.

i also want to ask, would i be able to specify which connection string to use, depending on via which endpoint client is accessing the service?

And lastly: I Dont want:

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

links to be accessible, i want the clients to use only their specified links ...

is that at all possible, or should i create separate services for each client ... ?

Thanks.

I think it require some setting in config file.

See this link,

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

THis might help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM