如何将消息从一个程序传递到另一个程序?
我有一个 .Net 3.0 应用程序,需要将整数传递给同一台计算机上的另一个程序。 我使用 WCF 服务来执行此操作,但在尝试在本地机器上托管该服务时遇到了用户权限问题。 任何关于如何实现这一目标的想法将不胜感激。
谢谢,
戴夫
I have a .Net 3.0 application that needs to pass an integer to another program on the same machine. I was using a WCF service to do this, but ran into user rights issues when trying HOSTING the service on the local box. Any thoughts on how to accomplish this woudld be greatly appreciated.
Thanks,
Dave
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
WCF 仍然是这里的出路。
通常,对于同一台计算机上的进程间通信,您将使用命名管道通道。 如果您没有使用此功能,我建议您使用此功能,然后确定托管中的错误是什么。
如果两个程序都有正在处理的消息循环,并且您正在发送一个整数,则您也可以通过 P/Invoke 层使用对 SendMessage 的调用,但这只是因为您发送的数据等于或小于SendMessage 将允许。 较大的消息将需要诸如 WCF 之类的东西。
WCF is still the way to go here.
Generally, for inter-process communication on the same machine, you would use the named pipe channel. If you are not using this, I suggest you do and then determine what the error in hosting is.
If both programs have message loops that are being processed, and you are sending an integer, you could use a call to SendMessage through the P/Invoke layer as well, but that's only because you are sending data that is equal to or smaller than what SendMessage will allow. Larger messages will require something like WCF.
System.IO.Pipes
System.IO.Pipes
.NET Remoting 是一种传递消息的方式程序之间。
.NET Remoting is a way to pass messages between programs.
你主持得怎么样? 请注意,使用 http 的非管理程序需要使用该端口的权限(在 http.sys 中)。 这是通过 netsh (Vista) 或 (IIRC) httpcfg (XP) 实现的。
例如,请参阅此处。
How were you hosting? Note that a non-admin program using http will need permissions to use the port (in http.sys). This is via netsh (Vista) or (IIRC) httpcfg (XP).
See here, for example.
WCF 是正确的选择。 您应该使用 NetNamedPipeBinding 来确保同一计算机通信的安全。
有关 WCFBindings 的更多信息 https://msdn.microsoft.com /en-us/library/ms730879(v=vs.110).aspx
WCF is the way to go. You should use NetNamedPipeBinding to secure in same machine communication.
More about WCFBindings https://msdn.microsoft.com/en-us/library/ms730879(v=vs.110).aspx