0

IIS でホストされている WCF サービスで、複数のエンドポイントをセットアップしようとしています。1 つは SOAP 用、もう 1 つは SOAP12 用です。MSDN のドキュメントに従ってWeb.config、次のように編集しました。

<services>
  <service name="MyNamespace.MyClass">
    <endpoint address="" binding="basicHttpBinding" contract="IContract" />
    <endpoint address="Endpoint2" binding="wsHttpBinding" contract="IContract" />
  </service>
</services>

これは効果がないようです。URLに答えはありません:

http://localhost:51454/MyClass.svc/Endpoint2

に変更IContractするとIContract2、次のエラーが表示されます。

The service '/MyClass.svc' cannot be activated due to an exception during 
compilation.

だからWeb.config私が編集しているのは使用されているものです。

デフォルト アドレスのバインディングを から に変更しbasicHttpBindingwsHttpBindingも効果はありません。WSDL は同じままです。

WSDL には次のビットが含まれています。これは、生成されたバインディングを使用して実行されていることを示唆しているようです。

<wsdl:service name="TapasSim">
    <wsdl:port name="BasicHttpBinding_IContract" 
               binding="i0:BasicHttpBinding_IContract">
        <soap:address location="http://localhost:51454/MyClass.svc"/>
    </wsdl:port>
</wsdl:service>

WCF サービスが の構成を使用しないのはなぜWeb.configですか? WCFが SOAP12 バインディングを
リッスンしないのはなぜですか? デフォルトのエンドポイントが からに 変わらないのはなぜですか?/Endpoint2
basicHttpBindingwsHttpBinding

4

3 に答える 3

1

MSDN の記事は正しく、構成に問題はありません。VSを使用してWCFクライアントを作成し、使用して正常に呼び出すことができました

http://localhost:51454/MyClass.svc/Endpoint2

どうやら、ブラウザから有効な URL として表示されません。2 番目の URL を使用してクライアントから消費してみると、うまくいくはずです

于 2013-02-12T21:38:30.533 に答える
1

エンドポイントのベース アドレスを追加してみてください。

  <service name="namespace.Service">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:51454/myclass.svc"/>
      </baseAddresses>
    </host>

// エンドポイントを省略

または、アドレスの前にスラッシュを追加してみてください:

endpoint address="/Endpoint2" binding="wsHttpBinding" contract="IContract"

于 2013-02-12T21:04:39.620 に答える
0

問題はサービス名でした:

<service name="MyNamespace.MyClass">

クラス名が間違っていました。間違ったコントラクト インターフェイスを入力すると、WCF はエラーをスローします。しかし、間違ったクラス名は黙って無視されます。これが、デフォルト構成に戻った理由を説明しています。

于 2013-02-13T10:59:55.277 に答える