我们使用 IPC 收到以下错误。
“无法连接到 IPC 端口:系统找不到指定的文件。” 该问题发生在 Windows 2003 服务器上。
当然,它只发生在生产中。我们无法在我们的开发环境中重现这一点。
尝试使用 IPC 的 Windows 服务正在作为本地系统运行。
是否有某种需要更改的权限?
我们使用 IPC 收到以下错误。
“无法连接到 IPC 端口:系统找不到指定的文件。” 该问题发生在 Windows 2003 服务器上。
当然,它只发生在生产中。我们无法在我们的开发环境中重现这一点。
尝试使用 IPC 的 Windows 服务正在作为本地系统运行。
是否有某种需要更改的权限?
我们试图在频道启动之前访问它。所以我们会收到“未找到”错误。将访问代码包装在一些“是否真的准备好”代码中解决了这个问题。
对我来说,DTA 工作正常。但突然我开始遇到同样的错误。
对我来说,修复是这样的:
-> Go To Task Manager
-> Go To Processes Tab
-> Find and kill the DTA process. For me this process is named as 'DTASHELL.exe'
现在尝试启动 DTA。它现在应该可以工作了:-)
我们在生产代码中遇到了这个问题。它在一小部分用户系统上失败了。
错误结果出现在我们使用的微软代码中。它使用用户名生成 IPC 通道。
ipc://APP_USER_000:SingeInstanceIPCChannel/SingleInstanceApplicationService
如果用户名中包含某些字符,则会生成无效的频道 URL,因此接收应用程序首先无法创建频道。
我们的解决方法是使用用户名的哈希,而不是用户名中的第一个字符。
(我们在这里使用代码:http: //blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx)
请发布您用于初始化服务器通道和发布对象的代码,以及您在尝试访问远程对象时使用的 uri 的客户端代码。
一个常见的陷阱是当您使用字典初始化通道,并使用设置通道的名称时
dic["name"] = "channelName";
//used for retrieving the channel - ChannelServices.GetChannel("channelName");
代替
dic["portName"] = "channelName";
//used as the identifier for the named pipe -
//The client should get the object from the uri : ipc://channelName/objectName