Каждая служба вызове имеет свой собственный раздел конфигурации в файле конфигурации приложения.
Ниже приведен пример app.config
, скопированный из the MSDN article 'Client Configuration'. Обратите внимание, что каждая вызванная вами служба имеет элемент endpoint
и что каждый элемент endpoint
может ссылаться на конфигурации binding
. Конфигурация WS-безопасности выполняется для элементов привязки, см. here для документации по безопасности WCF. В основном вам необходимо установить режим безопасности на Message
, чтобы использовать шифрование запросов и ответов WS-security.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<client>
<endpoint
name="endpoint1"
address="http://localhost/ServiceModelSamples/service.svc"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IHello"
behaviorConfiguration="IHello_Behavior"
contract="IHello" >
<metadata>
<wsdlImporters>
<extension
type="Microsoft.ServiceModel.Samples.WsdlDocumentationImporter, WsdlDocumentation"/>
</wsdlImporters>
</metadata>
<identity>
<servicePrincipalName value="host/localhost" />
</identity>
</endpoint>
// Add another endpoint by adding another <endpoint> element.
<endpoint
name="endpoint2">
//Configure another endpoint here.
</endpoint>
</client>
//The bindings section references by the bindingConfiguration endpoint attribute.
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IHello"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard">
<readerQuotas maxDepth="32"/>
<reliableSession ordered="true"
enabled="false" />
<security mode="Message">
//Security settings go here.
</security>
</binding>
<binding name="Another Binding"
//Configure this binding here.
</binding>
</wsHttpBinding>
</bindings>
//The behavior section references by the behaviorConfiguration endpoint attribute.
<behaviors>
<endpointBehaviors>
<behavior name=" IHello_Behavior ">
<clientVia />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Спасибо за ваш ответ. На самом деле я не буду знать, какие услуги раньше времени. Пользователи могут предоставлять услугу через пользовательский интерфейс, и мы обнаружим предоставленную услугу и выберем конкретный метод этого пользователя службы. Некоторым из этого вызова нужна WS-Security, но некоторые из них не – user132706
ОК, в этом случае вам придется создавать объекты конечной точки, привязки и поведения в коде. – codeape
Я только смогу узнать, с какой услугой подключаюсь во время выполнения, я нашел способ создания конечной точки и привязки кода, если я знал эту услугу раньше времени. Однако, если я не знаю эту услугу, я нашел способ вызвать веб-службы с отражением, похожие на этот пост: https://vaibhavgaikwad.wordpress.com/web-services-with-reflection-in-net/. Но я не знаю, как поддерживать WS-Security в этом случае – user132706