【问题标题】:IPC Remoting problemIPC远程问题
【发布时间】:2010-10-13 04:12:37
【问题描述】:

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

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

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

是否有某种需要更改的权限?

【问题讨论】:

  • 您是否尝试在生产系统上以您知道对相关资源具有权限的其他用户身份运行该服务?
  • 是的,我们将服务的用户更改为具有管理员权限的用户,一切正常。所以我假设这是一个许可的事情。
  • 那么创建一个具有您所需权限的用户帐户并在该帐户下而不是在本地系统下运行服务会不会有问题?
  • 我猜不是,但我想知道为什么本地系统不起作用。

标签: windows-services ipc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我们试图在频道启动之前访问它。所以我们会收到“未找到”错误。将访问代码包装在一些“它真的准备好了吗”代码中解决了这个问题。

    【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      错误出现在我们使用的微软代码中。它使用用户名生成 IPC 通道。

      ipc://APP_USER_000:SingeInstanceIPCChannel/SingleInstanceApplicationService

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

      我们的解决方法是使用用户名的哈希,而不是用户名中的第一个字符。

      (我们在这里使用代码:http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx

      【讨论】:

        猜你喜欢
        • 2011-05-15
        • 2017-02-18
        • 1970-01-01
        • 1970-01-01
        • 2016-02-05
        • 2011-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多