私の本では、WsHttpBindingとNetTCPBindingの2つのバインディングを使用して、2つのエンドポイントを公開し、ホストアプリケーションでサービスをホストする必要があります。
C#で次のコードを使用して、サービスに接続しようとしています。
Uri BaseAddress = new Uri("http://localhost:5640/SService.svc");
Host = new ServiceHost(typeof(SServiceClient), BaseAddress);
ServiceMetadataBehavior Behaviour = new ServiceMetadataBehavior();
Behaviour.HttpGetEnabled = true;
Behaviour.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
Host.Description.Behaviors.Add(Behaviour);
Host.Open();
サービス側では:
[ServiceContract]
public interface IService...
public class SService : IService....
次に、構成ファイルに次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="WsHttpBehaviour" name="SService.SService">
<endpoint
address=""
binding="wsHttpBinding"
bindingConfiguration="WsHttpBindingConfig"
contract="SService.IService" />
<endpoint
address=""
binding="netTcpBinding"
bindingConfiguration="NetTCPBindingConfig"
contract="SService.IService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:5640/SService.svc" />
<add baseAddress="net.tcp://localhost:5641/SService.svc" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
しかし、ホストアプリケーションにサービス参照を追加しようとすると、アドレスからメタデータをダウンロードできないと表示されます。私は何が悪いのか理解できず、先生はこれを教えたことはありませんでした。私は先に進んでそれを調べ、前もって学ぶことにしました。エディターを使用して、上記のWebConfigを作成しました。
誰かが私を正しい方向に向けることができますか?エディターを使用してメタデータの動作を追加し、HttpGetEnabledをtrueに設定しました。