1
我創建了一個.NET WCF服務,其目的是始終通過HTTPS。當我第一次創建服務框架並通過HTTP運行它時,它運行良好。我使用PHP5來測試與內置SOAP函數的互操作性。但是,一旦我切換到HTTPS,當我嘗試從PHP調用該函數時,我收到錯誤消息「方法不允許」和錯誤代碼「http」。它確實允許我檢索方法列表。當它調用方法「Test」時發生錯誤。通過HTTPS與WCF的WCF拋出「方法不允許」異常
這裏是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是如何調用它:
$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>");
}
我使用的是用於測試的自簽名的SSL證書,我不相信PHP需要一個可信的證書。
我在做什麼錯?
我看過提琴手,但是因爲它都是加密的,所以除非我缺少一些東西,否則它似乎沒有多大幫助。 我對缺少的BehaviorConfiguration屬性表示歉意。我把它放在那裏,並在複製/粘貼之前將其移除,然後試圖找出問題。 – Shane 2008-11-09 22:23:22