在隔离环境中通过MSMQ使用另一个WCF服务调用WCF服务

时间:2012-05-31 14:21:56

标签: wcf msmq

我的服务器有一个位于总公司的事件服务, H / O服务器

然后我有一个托管在外部服务提供商的服务器。 外部服务器

两台机器之间的连接是通过VPN连接的,两台服务器都在不同的域上。

我需要 Ext服务器上的应用程序来调用 H / O服务器上的事件服务。事件服务是一个WCF服务。

我正在考虑在MSMQ上使用WCF来保证 Ext Server 应用程序引发的任何事件都被传递到WCF事件服务。

我的问题是如何做到这一点: - 我在 H / O 服务器上的IIS中托管了我的WCF服务,然后在 Ext服务器上设置MSMQ并将我的应用程序安装在 Ext Server 按正常方式引用WCF服务,只是将绑定更改为指向本地队列?

如果是这种情况,我将面临哪些安全问题以及如何解决这些问题。

提前致谢

1 个答案:

答案 0 :(得分:0)

如果要跨域发送消息到队列,则需要将远程队列的发送权限授予名为ANONYMOUS LOGON的本地用户。这是为了在远程计算机上使用Windows 2008。

<强>更新

参与消息交换的任何计算机都需要安装MSMQ。在服务绑定中,您可以标识服务地址的本地队列。您创建单向操作合同以充当您的消息处理程序。将消息发送到此本地队列时将调用此方法。

从发送计算机中创建一个引用相同队列的客户端绑定(这次使用远程地址)。然后,您可以在客户端代码中调用该操作,这将导致MSMQ将消息传输到远程队列。

您遇到的问题是您要跨域访问,因此当您的呼叫到达远程队列时,发件人身份对该域没有任何意义,因此您必须允许任何人将消息发送到队列。您可以通过授予 Everyone 本地帐户对队列发送权限来执行此操作(您可能还需要获取属性获取权限)。