WCF HTTPS üzerinden PHP ile "İzin Verilmeyen Yöntem" atıyor

1 Cevap ûnet

Ben her zaman HTTPS üzerinden olması amaçlanmıştır bir. NET WCF hizmeti oluşturduk. Ben ilk hizmet iskeleti oluşturulan ve HTTP üzerinden koştu zaman, iyi çalıştı. Ben SOAP fonksiyonları dahili çalışabilirliği test etmek için PHP5 kullanılır. Ben HTTPS için açık bir kez PHP işlevini çağırmak çalıştığınızda Ancak, ben mesajı "Yöntem verilmiyor" ve hata kodu ile geri bir arıza olsun "http." Bu da beni yöntemlerinin listesini almak için izin vermez. Bu yöntem çağırdığında hata oluşur "Testi."

İşte WCF yapılandırma:

  <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>

Ve burada PHP çağırarak nasıl olduğunu:

$client = new SoapClient("https://192.168.0.3/API.svc?wsdl");
echo "<pre>" . print_r($client->__getFunctions(), 1) . "</pre>";
$param = new stdClass();
$param->A = "123";
$param->B = "456";
try {
    $client->Test($param);
} catch (Exception $e) {
    die("<pre>" . print_r($e,1) . "</pre>");
}

Ben test için kendinden imzalı bir SSL sertifikası kullanıyorum ve PHP güvenilir bir sertifika gerektirir inanmıyorum.

Ben yanlış ne yapıyorum?

1 Cevap

Aslında nerede talep var ne görmek için bir ağ algılayıcısı denediniz mi? Fiddler veya (senaryoya göre) Wireshark gibi bir şey.

Ayrıca - Sana behaviorConfiguration="apiBehavior" <service... elemanı eksik olduğunu unutmayın.