WCF を REST で動作させるために web.config に入れる必要がある最低限のものは何ですか? [WebGet] でメソッドに注釈を付けましたが、メッセージが表示されません。
3 に答える
*.svc ファイルの ServiceHost ディレクティブに次を追加すると、WebHttpBinding と WebHttpBehavior が自動的にセットアップされることがわかりました。
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
名前空間は、Web 上の他の場所で言及されているもの (この MSDN 記事など) とは少し異なることに注意してください。
これを行った後、web.config からセクション全体を削除することができましたが、すべてが機能していました!
エンドポイントで webHttpBinding を使用していることを確認します (httpBinding または wsHttpBinding ではありません)。これが私のエンドポイント設定です...
<endpoint address="" binding="webHttpBinding" bindingConfiguration=""
contract="WcfCore.ICustomer">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
サービスホストのアドレスがあることを確認する必要があります。
<services>
<service name="SomeLib.SomeService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/somebase"/>
</baseAddresses>
</host>
<!-- And one EndPoint **basicHttpBinding** WILL WORK !!! -->
<endpoint
address="basic"
binding="basicHttpBinding"
contract="SomeLib.SomeContract"/>
</service>
</services>
したがって、たとえば、コンソールアプリを介してセルフホスティングしている場合は、次の方法でホストを呼び出すことができます。
WebChannelFactory<IServiceContract> factory =
new WebChannelFactory<IServiceContract>(
new Uri("http://localhost:8080/somebase"));
コンソール アプリが起動すると、アドレスが自己ホストされていても参照可能になり、Webget URI テンプレートに基づいてアクションを呼び出すことができるはずです。
この最小構成により、セルフホスティングを介して WCF RestFULLY を呼び出すことができます。IIS でホストしている場合は、svc ファイルがカスタム ホストを置き換えることを除いて、基本的に同じように機能します。