WCFサービスは別のサービスを返すことができますか?
コード:
[ServiceContract]
public interface IServiceA
{
[OperationContract]
IServiceB GetServiceB();
[ServiceContract]
public interface IServiceB
{
public class ServiceA : IServiceA
{
public IServiceB GetServiceB()
{
return new ServiceB();
}
そして、ServiceBを呼び出すServiceAをアクティブ化するフォーム:
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
ServiceReference1.ServiceAClient client = new
ServiceReference1.ServiceAClient();
IServiceB serviceB = client.GetServiceB();
もちろん、GetServiceB()は次のようにキャストするときにサービスではなくオブジェクトを返すため、これを行うことはできません。
IServiceB serviceB = (ServiceB) client.GetServiceB();
CommunicationExceptionが発生します:「既存の接続がリモートホストによって強制的に閉じられました」