テスト WCF サービス WcfSampleLib を作成しました。コントラクトは IWcfSampleLib で、サービス クラスは clsWcfSampleLib です。
namespace WcfSampleLib
{
public class clsWcfSampleLib:IWcfSampleLib
{
public string getMsg(string name)
{
return " HI " + name;
}
}
[ServiceContract]
public interface IWcfSampleLib
{
[OperationContract]
string getMsg(string name);
}
}
これで、WCF をホストするウィンドウ フォーム アプリケーションを追加できました。App.configを次のように作成しました
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Beh">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://{server}:9097"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name ="WcfSampleLib.clsWcfSampleLib" behaviorConfiguration="Beh">
<endpoint address="http://{server}:9096/SomeName" binding="basicHttpBinding" contract ="WcfSampleLib.IWcfSampleLib"/>
<endpoint address="net.tcp://{server}:9095/SomeName1" binding="netTcpBinding" contract ="WcfSampleLib.IWcfSampleLib"/>
</service>
</services>
</system.serviceModel>
</configuration>
異なるエンドポイントを持つ 2 つの異なるクライアントから WCF を使用するための 2 つのエンドポイントがあります。ホスト アプリケーションの Form1_Load イベントに次のコード行を追加しました。
host = new ServiceHost(typeof(WcfSampleLib.clsWcfSampleLib));
host.Open();
MessageBox.Show("started");
これで、http://{server}:9097 のみでサービスの参照を追加できるようになりました。net.tcp://{server}:9095/SomeName1 と http://{server}:9096/SomeName を意味する異なる URL で両方のエンドポイントを使用できるようにする方法はありますか