先还原一下我出现错误的情景:我用C#控制台写了一个命名管道服务器,然后用ASP.NET写了一个客户端访问服务器,运行之后出现了下面的错误:
原因:服务器端的访问权限不够,所以是服务器端的问题,需要增加访问权限。(网上很多都说是文件夹的权限不够,情况不同,不适用于我这种情况)
解决办法:
(1)在服务器端相应地方添加以下代码。
PipeSecurity pse = new PipeSecurity();
pse.SetAccessRule(new PipeAccessRule("Everyone", PipeAccessRights.ReadWrite, System.Security.AccessControl.AccessControlType.Allow));//设置访问规则
NamedPipeServerStream npss = new NamedPipeServerStream(_pipName, PipeDirection.InOut, 10, PipeTransmissionMode.Message, PipeOptions.Asynchronous, 1024, 1024, pse, HandleInheritability.None);
添加之后,问题解决。
(2)在IIS中的默认应用程序池–>高级设置…–>标识改成Local System可以解决该问题。
解决。