2015-10-21 5 views
1

Я работаю над программным обеспечением на стороне клиента, написанным на .Net 4.5.1. Программное обеспечение поддерживает вызов различных веб-сервисов, некоторые из них защищены WS-Security, некоторые из них - нет.Динамический вызов веб-сервиса, защищенного WS-Security

Есть ли способ отправить некоторые запросы с помощью WS-Security, а некоторые - нет?

Большое спасибо

ответ

0

Каждая служба вызове имеет свой собственный раздел конфигурации в файле конфигурации приложения.

Ниже приведен пример 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> 
+0

Спасибо за ваш ответ. На самом деле я не буду знать, какие услуги раньше времени. Пользователи могут предоставлять услугу через пользовательский интерфейс, и мы обнаружим предоставленную услугу и выберем конкретный метод этого пользователя службы. Некоторым из этого вызова нужна WS-Security, но некоторые из них не – user132706

+0

ОК, в этом случае вам придется создавать объекты конечной точки, привязки и поведения в коде. – codeape

+0

Я только смогу узнать, с какой услугой подключаюсь во время выполнения, я нашел способ создания конечной точки и привязки кода, если я знал эту услугу раньше времени. Однако, если я не знаю эту услугу, я нашел способ вызвать веб-службы с отражением, похожие на этот пост: https://vaibhavgaikwad.wordpress.com/web-services-with-reflection-in-net/. Но я не знаю, как поддерживать WS-Security в этом случае – user132706

 Смежные вопросы

  • Нет связанных вопросов^_^