WCF через HTTPS с PHP выдает исключение «Метод не разрешен» - PullRequest
1 голос
/ 09 ноября 2008

Я создал службу .NET WCF, которая должна всегда работать по протоколу HTTPS. Когда я впервые создал каркас службы и запустил его по HTTP, он работал нормально. Я использовал PHP5 для проверки совместимости со встроенными функциями SOAP. Однако после переключения на HTTPS, когда я пытаюсь вызвать функцию из PHP, я получаю сообщение об ошибке с сообщением «Метод не разрешен» и кодом ошибки «http». Это позволяет мне получить список методов, хотя. Ошибка возникает при вызове метода «Тест».

Вот конфигурация WCF:

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="secureBasic">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="apiBehavior" name="TestAPI.API">
        <endpoint address="https://192.168.0.3/API" 
                  binding="basicHttpBinding" 
                  bindingConfiguration="secureBasic" 
                  contract="TestAPI.IAPI"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="apiBehavior">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

А вот как PHP это называет:

<code>$client = new SoapClient("https://192.168.0.3/API.svc?wsdl");
echo "<pre>" . print_r($client->__getFunctions(), 1) . "
"; $ param = new stdClass (); $ param-> A = "123"; $ param-> B = "456"; пытаться { $ Client-> Test ($ пары); } catch (исключение $ e) { умирают ( "
" . print_r($e,1) . "
"); }

Я использую самозаверяющий сертификат SSL для тестирования и не верю, что PHP требует доверенный сертификат.

Что я делаю не так?

1 Ответ

1 голос
/ 09 ноября 2008

Вы пробовали сетевой анализатор, чтобы увидеть, что на самом деле было запрошено откуда? Что-то вроде Fiddler или Wireshark (в зависимости от сценария).

Также - я отмечаю, что вам не хватает behaviorConfiguration="apiBehavior" в элементе <service....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...