12

サーバーの 1 つで、Windows サービスで WCF サービスをホストしています。basicHttpBinding で動作させ、.NET でテスト クライアントを構築した後 (最終的には動作しました)、SoapClient クラスを使用して PHP からアクセスしようとしました。最終的な消費者は PHP サイトになるので、PHP で消費できるようにする必要があります。

PHP コードの SoapClient クラスのコンストラクターに WSDL の URL を入力しなければならなかったとき、私は困惑しました。WSDL はどこにありますか? 私が持っているのは次のとおりです。

http://172.27.7.123:8000/WordServiceおよび http://172.27.7.123:8000/WordService/mex

これらのいずれも WSDL を公開しません。

WCF の初心者である私は、愚かなことを尋ねた可能性があります (または、どこかで間違った仮定をしている可能性があります)。優しくしてください :D

いいえ、 http://172.27.7.123:8000/ WordService?wsdl は http://172.27.7.123:8000/WordService異なるものを表示しません:(

IIS でホストする必要がありますか? 通常の WebService を使用する必要がありますか?

4

2 に答える 2

9

これは役立つかもしれません:

http://msdn.microsoft.com/en-us/library/ms734765.aspx

簡単に言うと、サービス エンドポイントと動作を構成する必要があります。最小限の例を次に示します。

<system.serviceModel>
  <services>

    <service 
      <!-- Namespace.ServiceClass implementation -->
      name="WcfService1.Service1" 

      <!-- User behaviour defined below -->
      behaviorConfiguration="SimpleServiceBehaviour"> 

      <endpoint 
        address="" 
        binding="basicHttpBinding"
        <!-- Namespace.Interface that defines our service contract -->
        contract="WcfService1.IService1"/>

    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="SimpleServiceBehaviour">

        <serviceMetadata 
          <!-- We allow HTTP GET -->
          httpGetEnabled="true" 

          <!-- Conform to WS-Policy 1.5 when generating metadata -->
          policyVersion="Policy15"/>

      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

XML コメントは無効であるため、忘れずに削除してください。

于 2008-10-03T17:24:40.527 に答える
1

このリンクを参照してください:

複数のバインディングとエンドポイントを使用した WCF サービスの公開

以前の ASMX サービスとは異なり、WCF の WSDL (Web サービス定義言語)
サービスは自動的に生成されません。前の画像はそれを教えてくれます
「このサービスのメタデータ公開は現在無効になっています。」.  
これは、サービスに関するメタデータを公開するようにサービスを構成していないためです。
 サービスの WSDL を公開するには、メタ情報を提供するようにサービスを構成する必要があります。ノート:  
mexHttpBinding は、サービスに関するメタ情報を共有するためにも使用されます。その間
名前はあまり「ばか」ではなく、Meta Data Exchange の略です。
于 2008-10-03T17:24:07.393 に答える