クライアント アプリで次のエラーが発生します
There was an error reading from the pipe: De pipe is beëindigd. (109,0x6d).
私の OperationContract の特定の実装を使用する場合。以下は要点を切り詰めたサンプルです。私のDataContractsは次のようになります:
[DataContract]
public class Person
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
[DataContract]
public class Employee : Person
{
[DataMember]
public string Function { get; set; }
}
そして、私の ServiceContract は次のようになります。
[ServiceContract] パブリック インターフェイス IAuthentication {
[OperationContract]
[WebGet]
Person GetDeveloper();
[OperationContract]
[WebGet]
Person GetArchitect();
}
このサービスを次のクラスのように実装します。
public class Authentication : IAuthentication
{
public Person GetDeveloper()
{
Person architect = new Person()
{
FirstName = "Asghar",
LastName = "Panahy"
};
return architect;
}
public Person GetArchitect()
{
Employee architect = new Employee()
{
FirstName = "Asghar",
LastName = "Panahy",
Function = "Architect"
};
return architect;
}
}
注: どちらのメソッドも同じ型を返します。1 つだけが Person をインスタンス化してそれを返しますが、2 つ目のメソッドは Employee をインスタンス化しますが、これも Person です。
クライアントから呼び出すと、サーバーではエラーが発生しませんが、クライアント側では次のようになります。
Console.WriteLine(" Connecting to Authenticate service... ");
NetNamedPipeBinding myBinding = new NetNamedPipeBinding("Authentication.Endpoint"); ;
EndpointAddress myEndpoint = new EndpointAddress("net.pipe://localhost/authentication"); ;
var myChannelFactory = new ChannelFactory<IAuthentication>(myBinding, myEndpoint);
IAuthentication proxy = myChannelFactory.CreateChannel();
Person person = proxy.GetDeveloper();
Console.WriteLine(String.Format("GetDeveloper OK : {0} {1} ", person.FirstName, person.LastName));
person = proxy.GetArchitect();
Console.WriteLine(String.Format("GetArchitect OK : {0} {1} ", person.FirstName, person.LastName));
出力は次のとおりです。
Authenticate サービスに接続しています... GetDeveloper OK : Asghar Panahy パイプからの読み取り中にエラーが発生しました: De pipe is beëindigd. (109、0x6d)。
誰でもこれについて私を助けてもらえますか? アスガル