2

我为网络农场编写应用程序,我想在服务器应用程序之间创建一个简单的对等网络,以便它们可以相互传递消息。例如,在删除缓存项时进行协调,或者增加共享计数器以更好地共享关键统计信息。

但显然这是不可能的。我的点对点代码在控制台应用程序中运行良好,但是当我将代码添加到 ASP.NET 网站时,出现以下错误:

当前上下文不支持系统事件通知。例如,服务器进程可能不支持全局系统事件通知。

[InvalidOperationException: System event notifications are not supported under the current context. Server processes, for example, may not support global system event notifications.]
   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +10259418
   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +539
   // My code here where I call the proxy object's method to start the WCF call

嗯,为什么不呢?看来这将非常有用!

有没有办法解决这个问题?

4

2 回答 2

1

您的服务在哪个版本的 IIS 上运行(假设 IIS)?IIS 6 比 IIS 7 受到更多限制——它只支持 HTTP 激活。同样,如果您尝试从 IIS 6 中启动对等客户端,它可能会因为同样的原因而被阻止 - IIS 无法将响应定向到正确的工作进程。

您始终可以将该服务实现为 Web 服务器上的 Windows 服务,并使用命名管道与您的 ASP.NET 站点进行通信。(Windows 服务将托管一个对等端点和一个命名管道端点,并且该站点将使用一个命名管道客户端。该服务将使用 [ServiceBehavior] 属性作为单个实例运行。

于 2010-03-06T06:56:00.470 回答
0

由于绑定保持其上下文的方式,我不确定这是可能的。

我建议使用普通的 http wcf 服务并在配置数据库中注册每个主机,或者甚至使用主题并发布 Web 服务器需要处理的事件。

于 2010-07-18T01:43:46.830 回答