Windows services IPC远程处理问题

Windows services IPC远程处理问题,windows-services,ipc,Windows Services,Ipc,我们使用IPC收到以下错误。 “无法连接到IPC端口:系统找不到指定的文件。” 此问题发生在Windows 2003服务器上 当然,这只发生在生产中。我们无法在我们的开发环境中重现这一点 试图使用IPC的Windows服务正在作为本地系统运行 是否需要更改某种权限?请发布用于初始化服务器通道和发布对象的代码,以及客户端代码,以及尝试访问远程对象时使用的uri 一个常见的陷阱是使用字典初始化通道,并使用 dic["name"] = "channelName"; //used for retri

我们使用IPC收到以下错误。
“无法连接到IPC端口:系统找不到指定的文件。” 此问题发生在Windows 2003服务器上

当然,这只发生在生产中。我们无法在我们的开发环境中重现这一点

试图使用IPC的Windows服务正在作为本地系统运行


是否需要更改某种权限?

请发布用于初始化服务器通道和发布对象的代码,以及客户端代码,以及尝试访问远程对象时使用的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

我们试图在频道旋转之前进入它。因此,我们将收到“未找到”错误。将访问代码包装在一些“它真的准备好了吗”代码中修复了问题。

对于我来说,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。它现在应该可以工作了:-)

我们在生产代码中遇到了这个问题。它在一小部分用户系统上出现故障

错误原来是在我们使用的microsoft代码中。它使用用户名生成IPC通道

ipc://APP_USER_000:SingeInstanceIPCChannel/SingleInstanceApplicationService

如果用户名中包含某些字符,则会生成无效的频道URL,因此接收应用程序首先无法创建频道

我们的解决方案是使用用户名的散列,而不是用户名中的第一个字符


(我们在此处使用的代码:)

您是否尝试过在生产系统上以您知道具有相关资源权限的其他用户的身份运行该服务?是的,我们已将该服务的用户更改为具有管理员权限的用户,并且一切正常。因此,我假设这是一个权限问题。那么,创建一个用户帐户,并在该帐户下而不是在本地系统下运行服务,这会是一个问题吗?我想不会,但我想知道为什么本地系统不起作用。丹诺:我在这里遇到了一个类似的问题:您的用户帐户到底做了什么“真的准备好了吗”看起来像什么?