OK、そうで最も重要なものは以下のとおりです。結合
、その後、いくつかの追加のものがでスロー
1)。アドレス:
ここからこれを取得する:
WebServiceHost host = new WebServiceHost(
typeof(MyService), new Uri("http://localhost:80/"));
host.AddServiceEndpoint(typeof(MyService), new WebHttpBinding(), "");
、ここで:
ServiceEndpoint sbEndpoint = host.AddServiceEndpoint(
typeof(MyService), new WebHttpRelayBinding(), "http://azureURL");
ので、あなたのようなものが必要です:あなたのサービスで
<endpoint address=""
<endpoint address="http://azureURL"
<endpoint address=""http://someURL"
を。バインディング
2):
最初のエンドポイントwebHttpBindingは、二番目はカスタムバインディング( "MyBinding")を使用している - ので、あなたが持っている:
<endpoint address=""
binding="webHttpBinding"
<endpoint address="http://azureURL"
binding="webRelayHttpBinding"
<endpoint address=""http://someURL"
binding="myBinding"
、あなたが定義する必要がありますカスタムバインディング:
<bindings>
<customBinding>
<binding name="MyBinding">
.. define the parameters of your binding here
</binding>
</customBinding>
</bindings>
または別のアセンブリ内のコードに保存された結合のための<extensions>
セクションを作成します。
3)
をコントラクト私は明らかにどこにでも契約が表示されない - あなたは今までのtypeof(MyServiceで)を使用していますが、通常、これはインスタンス具体的なサービスではなく、サービス契約は、インターフェース(例えばIMyService
のようなもの)でなければなりません。なぜあなたは明示的なサービス契約をしていませんか?とにかく
、あなたのサービスの実装は、同じ時間(ないのベストプラクティスが、可能!)で、その後、あなたはこのようなあなたの2つのエンドポイント持って、あまりにも、契約の場合:
<endpoint address=""
binding="webHttpBinding"
contract="MyService" />
<endpoint address="http://azureURL"
binding="webHttpRelayBinding"
contract="MyService" />
<endpoint address="http://someURL"
binding="myBinding"
contract="MyService" />
をあなたはその後、追加する必要がありますあなたが不足しているすべてがある
今
<system.serviceModel>
<bindings>
<customBinding>
<binding name="MyBinding">
.. define the parameters of your binding here
</binding>
</customBinding>
</bindings>
<services>
<service name="YourNameSpace.MyService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:80/" />
</baseAddresses>
</host>
<endpoint address=""
binding="webHttpBinding"
contract="MyService" />
<endpoint address="http://azureURL"
binding="webHttpRelayBinding"
contract="MyService" />
<endpoint address="http://someURL"
binding="myBinding"
contract="MyService" />
</service>
</services>
</system.serviceModel>
:いくつかのあちこちで振りかける(サービスに名前を付け、その上、サービスの「ベースアドレス」を定義)、およびのようなもので終わる必要があります定義された動作 - 私はポスターの練習としてそれを残します:-)
これは何かを助けますか?
参考までに...難しいとは....私は通常の書籍(MLBustamanteの「Learning WCF」は初心者/中級者向け、「プログラミングWCF」はJuval Lowyの中級/上級者向けです)私の最高の賭けであり、多くの経験、本当に。私は明示的に示し、コードと設定の設定をどのように変換するかを教えているソースは知らない。通常、2つの書籍は両方の方法を示しており、これから自分自身を理解することができる。
マルク・
設定ファイルを作成するプロセスを説明してくれてありがとう。期待どおり、サービスの実装も契約です。契約は2つの非常に一般的な機能から成っており、再利用はできないため、これを選択しました。私は最初にwebHttpBindingを試して、既存のプログラム設定をコメントアウトしました。ただし、動作しません。 Webブラウザでhttp:// localhostを開くと、サービスにアクセスできません。私はVSでアプリケーションのいくつかの他の設定を行う必要がありますか? – Etan
WebHttpバインディングの場合、WebServiceHostが必要です。他のバインディングの場合は、まっすぐなServiceHostが必要です。単一の(Web)ServiceHostですべてのエンドポイントをホストできる –