エラーは非常に明確である - あなたHTTPを使用している場合、ServiceMetadataビヘイビアでHttpGetEnabledを有効にしましたが、設定にベースアドレスを指定していません。
IISでは、* .svcファイルの場所によってサービスアドレスが定義されるため、ベースアドレスは不要で使用されません。あなたがセルフホスティングしているときは、ベースアドレスを使用することができます。
はこのような何かを見て、あなたの設定を変更し
:
<system.serviceModel>
<services>
<service name="YourService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/YourService" />
</baseAddresses>
</host>
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
..... (your own other endpoints) ...........
</service>
</services>
</system.serviceModel>
を今、「HttpGetEnabled」からメタデータを取得するために行くためにベースアドレスhttp://localhost.8080/YourService
を持っています。
それとも、これを好きではない場合は、もう一度、エラーメッセージがあなたの代わりに、非常に明確である:あなたのServiceMetadataにHttpGetUrlの絶対URLを定義します。
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata
httpGetEnabled="true"
httpGetUrl="http://localhost:8282/YourService/mex" />
</behavior>
</serviceBehaviors>
クライアントからメタデータを取得することができますあなたの "mex"エンドポイントは、この2番目の例のように定義された固定URLのいずれかであるか、メタデータのサービスのベースアドレス(存在する場合)に移動します。
IISから来ていて何も調整していない場合は、ベースアドレスもメタデータ交換エンドポイントの明示的で絶対的なURLもないため、表示されているエラーが発生します。
マルク・
解決しています
プロキシを作成するために、あなたのコードは何ですか? – Dani
productsServiceHost =新しいServiceHost(typeof(Products.ProductsService)); productsServiceHost.Open(); stop.IsEnabled = true; start.IsEnabled = false; status.Text = "サービスの実行中..."; – Attilah