gpt4 book ai didi

WCF 错误 109 : here was an error reading from the pipe. 管道在客户端关闭

转载 作者:行者123 更新时间:2023-12-05 04:19:08 25 4
gpt4 key购买 nike

我的客户端应用程序出现以下错误

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 看起来像这样:

[服务契约(Contract)]公共(public)接口(interface) 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;
}
}

注意:两种方法都返回相同的类型,只有一种方法实例化了一个 Person 并返回它,而第二种方法实例化了一个 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));

输出是:

正在连接到身份验证服务...GetDeveloper OK : Asghar Panahy从管道读取错误:De pipe is beëindigd。 (109, 0x6d).

有人可以帮我解决这个问题吗?阿斯加尔

最佳答案

我知道这个问题有点老了,但我仍然可以帮助别人。我现在在命名管道绑定(bind)方面遇到了同样的问题(得到同样的错误)。

这里的问题是Employee派生类的返回。有很好的解释here

因此,如果您应用 KnownTypeAttribute,它应该可以正常工作:

[DataContract]
[KnownType(Employee)]
public class Person
...

关于WCF 错误 109 : here was an error reading from the pipe. 管道在客户端关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com