2011-01-16 8 views
1

WCF 4.0の構成を使用して、すべてのWCFサービスに対して自動的にこれを行う方法はありますか?WCF 4.0既定でWebHttpBindingエンドポイントを追加します。

つまり、WCF 4.0ではデフォルトで特定の動作をすべてのホストされたエンドポイントに適用する新しい設定手法が公開されており、設定によって個々のエンドポイントを明示的に指定する必要はありません...しかし、 BasicHttpBindingとWebHttpBinding(WebHttpBindingの/ Web相対アドレスを使用)の両方で自動的にすべてのサービスをホストするように設定されているconfig?それともカスタムServiceHostFactoryを使用する必要がありますか?

ありがとうございました。

答えて

2

WCF 4.新機能の

一つで興味深いものがたくさんのためDeveloper's Introduction to WCF 4デフォルトのプロトコルマッピングと呼ばれ、WCF 4によって提供されるデフォルトのエンドポイントと組み合わせて、これはあなたの問題を解決する可能性があります。を参照してください。

デフォルトのエンドポイントは、サービスクラスが実装する各契約(通常は1のみ)と、設定で定義された各ベースアドレス(またはServiceHostのコード)ごとに1つのエンドポイントを提供することを意味します。

http://エンドポイントがwebHttpBindingで自動的に公開されることを確認するために、あなたはまた、システムのデフォルト(basicHttpBindingである)をオーバーライドする必要があります - あなたは、プロトコルのマッピングのおかげで行うことができます。

<configuration> 
    <system.serviceModel> 
    <protocolMapping> 
     <add scheme="http" binding="webHttpBinding"/> 
    </protocolMapping> 
    </system.serviceModel> 
</configuration> 
+0

ありがとう。しかし、webHttpBindingとbasicHttpBindingの両方を(おそらくWebHttpBindingの/ webの相対URLとともに)使用する方法を教えてください。 – Jeff

+0

@ JeffN825:いいえ、両方のHTTPベースのバインディングを自動的に持つことはできません。必要な場合は、エンドポイントとそのバインディングをコードまたは設定で明示的に定義する必要があります。あなたは "スキーム"(http、net.tcpなど)ごとに一つのデフォルトバインディングしか定義できません。この非常にトピックに関するこの他の質問への私の答えを参照してください:http://stackoverflow.com/questions/4704829/how-do- i-expose-a-soap-endpoint-wcf-starter-kit/4704847#4704847 –

+0

Btw。 WebServiceHostを使用すると、webHttpBindingは設定なしでデフォルトとして使用されます。 –

関連する問題