私はWCFとC#が初めてです。
2 つの実装 (A1 & A2) を持つ 1 つのメソッド (Do) を持つ 1 つのインターフェイス (IA) を持つ WCF サービスを作成しようとしています。
ばかげた例:
IA.cs:
namespace IA_NS
{
[ServiceContract]
public interface IA
{
[OperationContract]
int Do(B b);
}
[DataContract]
public class B
{
[DataMember]
public string b1 { get; set; }
}
}
A1.cs:
namespace A1_NS
{
public class A1 : IA
{
public int Do(B b) {...}
}
}
A2.cs:
namespace A2_NS
{
public class A2 : IA
{
public int Do(B b) {...}
}
}
両方のサービスをホストするセルフホスティングコンソール:
class Program
{
static void Main(string[] args)
{
ServiceHost hostA1 = new ServiceHost(typeof(A1_NS.A1));
hostA1.Open();
ServiceHost hostA2 = new ServiceHost(typeof(A2_NS.A2));
hostA2.Open();
Console.WriteLine("Hit any key to exit...");
Console.ReadLine();
hostA1.Close();
hostA2.Close();
}
}
WCF クライアントで両方のクラスを呼び出せるようにしたい:
Client.cs:
namespace Client_NS
{
class Program
{
static void Main(string[] args)
{
B myB = new B();
A1 a1 = new A1();
A2 a2 = new A2();
A1.Do(myB);
A2.Do(myB);
}
}
}
運が悪い;-(
WCF-Service app.configに2つの要素を入れてみました:
<service name="A1_NS.A1" >
<endpoint address="http://localhost/A1"
contract="IA_NS.IA" />
</service>
<service name="A2_NS.A2" >
<endpoint address="http://localhost/A2"
contract="IA_NS.IA" />
</service>
デバッガーを実行すると、デバッグ アプリ (WCF サービス ホスト) を使用して、両方のクラスの Do() メソッドをテストできます。
クライアントにそれをさせることができません。両方のサービスのサービス参照を追加しました。それはクライアントの app.config ですか、それとも何か誤解していますか?