2

Anthony Steele によるこのブログ投稿でプロジェクトを再作成することにより、WCF で RESTful サービスを構築する方法を学ぼうとしています。彼は構成で次の XML を使用して、サービスのエンドポイントをセットアップします。

    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/greeter"/>
      </baseAddresses>
    </host>

しかし、ASP.NET 3.5 Web サイトの web.config で同じことをしようとすると、サービスに移動できません。私が使用しているXMLは次のとおりです。

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="GreeterBehavior">
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service behaviorConfiguration="GreeterBehavior" name="Greeter">
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:49268/TestREST/webapi/services/greeter"/>
        </baseAddresses>
      </host>
      <endpoint address="" binding="wsHttpBinding" contract="IGreeter">
        <identity>
          <dns value="localhost"/>
        </identity>
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>
  </services>
</system.serviceModel>

この構成により、http://localhost:49268/TestREST/webapi/services/greeterに移動してサービスを確認できると思います。リソースが見つからないというメッセージが表示されるだけです。何か不足していますか?

編集:私の問題の一部は、バインディングが wHttpBinding だったことです。webHttpBinding を使用すると、サービスを正しく使用できるようになりました。ただし、baseAddress 構成セクションはまだ効果がありません。

4

1 に答える 1

4

私の推測では、サービス エンドポイントが正常に作成されていません。

サービスの「名前」属性に、サービス タイプの FQN (完全修飾名) が含まれていません。第二に、エンドポイントの「契約」属性では、契約タイプに FQN も含めていません。

一方、これはポートの問題である可能性があります。確認するには、Visual Studio 2008 ディストリビューションに含まれている WcfTestClient.exe を実行してみてください。http://localhost:49268/TestREST/webapi/services/greeter/mexに接続できる場合は、ポートの問題ではないことがわかります。

MEX 経由で接続できると仮定して、おそらくhttp://localhost:49268/TestREST/webapi/services/greeterにマップされるいくつかのメソッドを実行してみてください。

サーバーで操作している場合は、次の HttpCfg.exe に関する重要な詳細を参照してください: WCF ServiceHost basicHttpBinding 503 エラー

WcfTestClient の詳細が必要な場合は、ここで探してください: Is it possible to make the WcfTestClient work for custom transport channels?

念のため:サンプルをそのままコピーし、構成ファイルを含めて定義どおりに動作することを確認してから、わずかな逸脱を加えてください。

于 2009-02-12T16:03:38.383 に答える