我有連接到NamedPipeServerStream的NamedPipeClientStream。他們交換幾條消息,然後關閉NamedPipeClientStream,重新創建NamedPipeServerStream並繼續偵聽客戶端管道。 (我無法制作一個異步的服務器管道,所以這是某種狗狗式的)NamedPipeClientStream無法訪問會話0下的NamedPipeServerStream
客戶端 - 服務器交互在我的客戶端從正常用戶會話啓動的流期間工作正常。
但是,在Win7和win2008服務器上,會話0啓動Client管道時會出現這種情況。當發生這種情況,我在客戶端流的錯誤:
「的路徑訪問被拒絕」
問題是什麼?如何避免它?
對不起,我不能告訴你關於異常的更多信息。只有我有這個消息在日誌中。而且我無法從零會話調試我的程序,可以嗎?
服務器流代碼:
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);
也許東西是錯誤的安全設置?
而且客戶端代碼:
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..
}
//...
}
服務器推出,LocalSystem下windows服務。客戶端 - 是一個簡單的控制檯應用程序。它由從LocalSystem服務啓動的另一個應用程序啓動。
鏈接斷開。我討厭微軟不斷重組他們的網站,並在整個互聯網上留下數以百萬計的破碎鏈接。 – RenniePet