Конфигурация нескольких конечных точек службы WCF - PullRequest
0 голосов
/ 21 июня 2011

У меня есть сервис WCF:

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

Ниже приведен соответствующий раздел web.config моего приложения WCF (дайте мне знать, если вам нужно больше):

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

Пожалуйста, дайте мне знать, как этого добиться. Я не хочу создавать отдельный сервис для всех клиентов.

если это работает, я хочу использовать другой контракт = "MyService.IService" в определении конечной точки для всех клиентов, поскольку методы для каждого клиента, представленного в службе, будут отличаться.

Я также хочу спросить, смогу ли я указать, какую строку подключения использовать, в зависимости от того, через какой клиент конечной точки обращается к службе?

И, наконец, я не хочу:

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

ссылки должны быть доступны, я хочу, чтобы клиенты использовали только свои указанные ссылки ...

это вообще возможно, или я должен создать отдельные службы для каждого клиента ...?

Спасибо.

1 Ответ

0 голосов
/ 21 июня 2011

Я думаю, что это требует некоторых настроек в конфигурационном файле.

См. Эту ссылку,

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

Это может вам помочь.

...