вызов веб-сервиса с помощью WCF по Http и Https

и это будет работать?

$this->db->where('LastName', 'Svendson');
$this->db->where('Age', 12);
$this->db->where("(FirstName='Tove' OR FirstName='Ola' OR Gender='M' OR Country='India')", NULL, FALSE);
$query = $this->db->get('Persons');
return $query->result();
12
задан MatthewMartin 4 September 2015 в 20:23
поделиться

4 ответа

Я понимаю что вы используете WCF для создания клиента, который подключается к удаленной веб-службе через HTTPS.

Для этого просто измените клиентский файл конфигурации для приложения на базе WCF, заменив http: //server.address на https: //server.address в configuration/system.serviceModel/client/endpoint/@address. примерно так:

<configuration>
  <system.serviceModel>
    ...
    <client>
        <!-- change only the address string -->
        <endpoint address="https://server.name/Whatever"
            everything.else.stays.the.same />

    </client>
  </system.serviceModel>
</configuration>

(Путь к файлу конфигурации зависит от обычных правил .NET: будь то приложение ASPNET, служба и т. д.)

ИЛИ вы можете явно указать адрес в коде:

    // instantiate new proxy to web service
    var svc= new ServiceClient();
    var e = svc.Endpoint;
    e.Address = new System.ServiceModel.EndpointAddress("https://server.address/JavaServiceUri");

Я настоятельно рекомендую вам сделать адрес настраиваемым, а не жестко его кодировать. Это не означает, что он должен храниться в app.config, но его можно изменять. Прокси тоже.

0
ответ дан 2 December 2019 в 06:27
поделиться

См. Настройка HTTP и HTTPS :

Использование Windows Communication Foundation (WCF) через HTTP либо требуется использование хоста, такого как Интернет Информационные службы (IIS) или руководство конфигурация настроек HTTP через API HTTP-сервера. это документ описывает вручную настройка WCF при использовании HTTP и HTTPS.

А также см. Привязки WCF, необходимые для HTTPS :

Я только что закончил писать свой первый производственное приложение WCF, которое работал очень хорошо, пока я его не развернул в нашу производственную среду. Все внезапно ни один из вызовов WCF не работать, и я бы получил JavaScript Ошибка «TestService не определена». Когда я заглядываю внутрь JS-сервиса ссылку (в режиме отладки), я получил следующая ошибка:

Не удалось найти базовый адрес, соответствующий схеме http для конечной точки с привязкой WebHttpBinding. Зарегистрированные схемы базовых адресов: [https]

Очевидно, моя служба WCF зарегистрировался как HTTPS (поскольку он через SSL), но моя привязка была только настроен для HTTP. Решение чтобы определить пользовательскую привязку внутри вашего Web.Config и установите безопасность режим "Транспорт". Тогда ты просто нужно использовать привязкуConfiguration свойство внутри вашей конечной точки определение, чтобы указать на ваш обычай привязка. Весь HTTPS-совместимый Раздел system.serviceModel находится ниже:

0
ответ дан 2 December 2019 в 06:27
поделиться

Я предполагаю, что вы используете базовую привязку. Затем вам нужно сделать две вещи:

  • изменить адрес на https :)
  • установить транспортный режим безопасности
2
ответ дан 2 December 2019 в 06:27
поделиться

Я нашел ответ, копающийся в MSDN.

В моем случае я использовал пользовательскую привязку:

<customBinding>
    <binding name="jsonpBinding">
        <jsonpMessageEncoding/>
        <httpTransport manualAddressing="true"/>
    </binding>
</customBinding>

На которую ссылались в сервисе

<services>
    <service name="{YourInfoHere}">
        <endpoint address="" binding="customBinding" bindingConfiguration="jsonpBinding" behaviorConfiguration="{YourInfoHere}" contract="{YourInfoHere}"/>
    </service>
</services>

Добавление второй привязки, которая использовала httpsTransport, а затем второй службы, которая использовала эту привязку, сделало трюк. Окончательный вывод:

    <services>
        <service name="{YourInfoHere}">
            <endpoint address="" binding="customBinding" bindingConfiguration="jsonpBinding" behaviorConfiguration="{YourInfoHere}" contract="{YourInfoHere}"/>
            <endpoint address="" binding="customBinding" bindingConfiguration="jsonpBindingHttps" behaviorConfiguration="{YourInfoHere}" contract="{YourInfoHere}"/>
        </service>
    </services>
    <bindings>
        <customBinding>
            <binding name="jsonpBinding">
                <jsonpMessageEncoding/>
                <httpTransport manualAddressing="true"/>
            </binding>
            <binding name="jsonpBindingHttps">
                <jsonpMessageEncoding/>
                <httpsTransport manualAddressing="true" />
            </binding>
        </customBinding>
    </bindings>

Может быть не идеально, но это работает. Это были единственные изменения, которые я сделал, чтобы SSL заработал. Так как все это в binding & transport, код остается прежним.

Соответствующие ссылки MSDN:

  1. Custom Binding: http://msdn.microsoft.com/en-us/library/ms731377.aspx
  2. HttpTransport: http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.httptransportbindingelement.aspx
  3. HttpsTransport: http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.httpstransportbindingelement.aspx
22
ответ дан 2 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: