我知道这里有100万个帖子,但我不明白这个。 我有一个极值简单的例子管道服务:Mysterious =>从管道读取时发生错误:管道已结束。 (109,0x6d)
当我把它的人,一切都很好,但是当两个客户端同时调用它会抛出该异常。 服务器直接设置一个新线程并返回给客户端。
public void RiskExport(long sraid, long revID, string JobID)
{
ThreadStarter starter = new ThreadStarter(new ThreadStartWithParameter(RunExportJob), new SRAInfo() { sraid = sraid, revID = revID, JobID = JobID });
Thread t = new Thread(new System.Threading.ThreadStart(starter.ThreadStartEntry));
t.IsBackground = true;
t.Start();
}
因此,它不能是一个超时的问题,因为它从cleint到服务器和后面需要1秒的时间。尤其是当我在同步称它为环路从我的单元测试
string JobID = "";
for (int i = 0; i < 100; i++)
{
string baseAddress = "net.pipe://localhost/SRADocumentService";
ChannelFactory<ISRARiskExport> factory = new ChannelFactory<ISRARiskExport>(new NetNamedPipeBinding(NetNamedPipeSecurityMode.None), new EndpointAddress(baseAddress));
ISRARiskExport svc = factory.CreateChannel();
JobID = Guid.NewGuid().ToString();
svc.RiskExport(sraid, revID, JobID);
}
我都准备好激活WCF跟踪。在这里我可以看到每次调用抛出异常。详细信息窗格根本没有帮助我,因为它向我显示两次异常=> 从管道读取时发生错误:管道已结束。 (109,0x6d)。
随着不同的堆栈跟踪=>
我也看到在DebugView中的例外来长后拨回是在客户端。 我的问题是:
为什么服务工作,因为即使当它抛出这个异常
我怎样才能摆脱例外的,因为他们都得到日志文件和我expectet我不会感冒。
THX迈克尔
没有这个例子,没有人可以帮助你。您可能想编辑帖子。 –
哈哈 - 我无法添加所有的内容。所以我做了一些步骤。 –