2012-11-01 16 views
9

NamedPipeServerStream'e bağlanan NamedPipeClientStream var. Birkaç ileti alış verişi ve daha sonra NamedPipeClientStream kapatılıyor, ancak NamedPipeServerStream yeniden oluşturuluyor ve istemci borularını dinlemeye devam ediyor. (Ben bir çalışma async Server Pipe yapamam, bu bir çeşit köpek-tırnak)AdlandırılmışPipeClientStream, NamedPipeServerStream öğesine 0 oturumun altında erişemez

İstemci-sunucu etkileşimi, normal kullanıcı oturumlarından başlatılan istemcinin akışları sırasında gayet güzel çalışıyor.

Ancak, istemci borusunun Win7 ve win2008 sunucusunda oturum 0'dan başlatıldığı bir durum vardır. Bu durumda ben İstemci akışında bir hata vardı:

"yoluna erişim engellendi"

sorunu nedir? Nasıl önlenir?

Üzgünüz, size istisna hakkında daha fazla bilgi veremem. Sadece bu mesaj günlüğümde var. Programımı sıfır oturumdan ayıklayamıyorum, değil mi?

sunucu akışı kodu:

PipeSecurity ps = new PipeSecurity(); 
System.Security.Principal.SecurityIdentifier sid = new System.Security.Principal.SecurityIdentifier(System.Security.Principal.WellKnownSidType.BuiltinUsersSid, null); 
PipeAccessRule par = new PipeAccessRule(sid, PipeAccessRights.ReadWrite, System.Security.AccessControl.AccessControlType.Allow); 
ps.AddAccessRule(par); 
pipeClientConnection = new NamedPipeServerStream(General.PIPENAME, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous, General.BUFFERSIZE, General.BUFFERSIZE, ps); 
Console.Write("Waiting for client connection..."); 
IAsyncResult result = pipeClientConnection.BeginWaitForConnection(OnPipeConnected, pipeClientConnection); 

Belki bir şey güvenlik ayarlarıyla yanlıştır?

Ve istemci kodu:

using (NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", General.PIPENAME, PipeDirection.InOut)) 
{ 
    try 
    { 
     Console.WriteLine("Connecting with pipe..."); 
     pipeStream.Connect(General.CONNECTIONTIMEOUT); 
     Console.WriteLine("Pipe connection established"); 
     //..do something.. 
    } 
    //... 
} 

sunucu LocalSystem altında windows hizmeti olarak başlatılır. İstemci - basit bir konsol uygulamasıdır. LocalSystem hizmetinden başlatılan başka bir uygulama tarafından başlatıldı. Burada sorun güvenlik ayarlarında olduğu gibi

cevap

12

görünüyor:

System.Security.Principal.SecurityIdentifier sid = new System.Security.Principal.SecurityIdentifier(System.Security.Principal.WellKnownSidType.BuiltinUsersSid, null); 

olmalı:

System.Security.Principal.SecurityIdentifier sid = new System.Security.Principal.SecurityIdentifier(System.Security.Principal.WellKnownSidType.WorldSid, null); 

Teşekkür microsoft communnity

+9

Bağlantı bozuldu. Microsoft'un web sitelerini yeniden düzenleyip internetin her tarafında milyonlarca kopuk bağlantı bıraktığından nefret ediyorum. – RenniePet

İlgili konular