Я следовал различным инструкциям здесь, чтобы настроить мою службу WCF для поддержки как http, так и https.По сути, все они в значительной степени указали, что мне нужно дублировать мои конечные точки для каждого протокола, поэтому мой сервер настроен так:
<service behaviorConfiguration="MyApp.WebServices.ServiceBehavior" name="MyApp.WebServices.ServiceLibrary">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpsBinding" name="AuthenticationService" contract="MyApp.WebServices.IAuthenticationService" />
<!-- HTTP enpoints -->
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicBinding" name="AuthenticationService" contract="MyApp.WebServices.IAuthenticationService" />
</service>
Итак, у меня есть разные привязки, одна для http,и один для https для каждой конечной точки.
Моя проблема заключается в том, что я создаю клиент для этого веб-сервиса, используя ссылки на службы Visual Studio 2010.Я хотел бы иметь возможность просто указать ссылку на службу на:
http://mysite.com/myapp/servicelibrary.svc
или
https://mysite.com/myapp/servicelibrary.svc
Мой идеальный сценарий - если ссылка на службу использует только http или httpsсоответствующие конечные точки, использующие один и тот же протокол, помещаются в файл app.config клиента.Таким образом, если я ссылаюсь на библиотеку службы http, я получаю обе пары конечных точек следующим образом:
<client>
<endpoint address="https://ip-0af84f03/myapp/ServiceLibrary.svc"
binding="basicHttpBinding" bindingConfiguration="AuthenticationService"
contract="Services.IAuthenticationService" name="AuthenticationService" />
<endpoint address="http://mysite.com/myapp/ServiceLibrary.svc"
binding="basicHttpBinding" bindingConfiguration="AuthenticationService1"
contract="Services.IAuthenticationService" name="AuthenticationService1" />
</client>
Итак, когда я пытаюсь получить доступ к функции из AuthenticationService, я получаю эту ошибку:
Не удалось загрузить раздел конфигурации конечной точки для контракта «Services.IAuthenticationService», поскольку найдено более одной конфигурации конечной точки для этого контракта.Пожалуйста, укажите предпочитаемый раздел конфигурации конечной точки по имени.
Я знаю, что могу избавиться от ошибки, вручную удалив ненужные дубликаты конечных точек из моего app.config на моем клиенте, но я бы предпочел, чтобыони не отображаются в первую очередь при настройке сервисной ссылки.
Возможно ли это?