WCF Web サービスを作成し、IIS でホストしました。web.config は次のようになります。
[...]
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="[Namespace].[ServiceNameBehavior]">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="[Namespace].[ServiceName]" behaviorConfiguration="[NameSpace].[ServiceNameBehavior]" >
<endpoint address="basic" binding="basicHttpBinding" contract="[Namespace].[IService]" />
<endpoint address="secure" binding="basicHttpsBinding" contract="[Namespace].[IService]" />
</service>
</services>
</system.serviceModel>
[...]
アクセスするhttp://localhost/[Namespace]/[ServiceName].svc
と、サービスを作成したことを示す通常の Web サービス Web ページが表示されます。それをテストするには、svcutil.exe などを使用してサービスを呼び出す必要があります。
さて..問題は、web.configで定義されているように、このWebサービスに2種類の接続を使用したいことです(実際には、これら2つへのアクセスを制限するだけなので、デフォルトの.svc
呼び出しを無効にします)が、 http://localhost/[Namespace]/[ServiceName].svc/basic
またはhttps://localhost/[Namespace]/[ServiceName].svc/secure
、空白のページが表示され、ローカルでホストされている PHP ページからサービスにアクセスできません。
これらのバインディングがこのように動作するのは正常ですか? そうでない場合は、どうすれば修正できますか?
更新 1
また、Visual Studio からこれらのエンドポイントのいずれかへの参照を作成しようとすると、次のエラーが発生することにも気付きました。
「https://localhost/[Namespace]/[ServiceName].svc/secure」のダウンロード中にエラーが発生しました。リクエストは HTTP ステータス 400: Bad Request で失敗しました。メタデータに解決できない参照が含まれています: 'https://localhost/[Namespace]/[ServiceName].svc/secure'. コンテンツ タイプ application/soap+xml; charset=utf-8 はサービス https://localhost/[Namespace]/[ServiceName].svc/secure でサポートされていませんでした。クライアントとサービスのバインディングが一致していない可能性があります。リモート サーバーがエラーを返しました: (415) コンテンツ タイプが 'application/soap+xml; であるため、メッセージを処理できません。charset=utf-8' は予期されたタイプの 'text/xml ではありませんでした。charset=utf-8'.. サービスが現在のソリューションで定義されている場合は、ソリューションを構築してサービス参照を再度追加してみてください。
http://localhost/[Namespace]/[ServiceName].svc への参照を追加するとうまくいきます。