2017-03-13 41 views
0

我正在使用ZeroMQ与clrzmq和libzmq dll文件的组合。ZeroMQ上下文未在Windows Server 2012机器上初始化

我已将这些文件包含在我的Windows服务项目中,并且它在简单的Windows PC中工作正常。现在,我将服务移至Windows Server 2012计算机,并在其中安装了具有管理员权限的服务并尝试启动ZMQ服务器。所有尝试启动服务器都失败,出现以下错误。

我的代码

 public void InitializeServer() 
     { 
      using (var context = ZmqContext.Create()) 
      { 
       using (var socket = context.CreateSocket(SocketType.REP)) 
       { 
        HelperMethods.WriteLog(string.Format("server started at: {0}", serverAddress)); 
        socket.Bind(serverAddress); 

        while (true) 
        { 
         lock (_lock) 
         { 
          try 
          { 
           var rcvdMsg = socket.Receive(Encoding.UTF8); 
           HelperMethods.WriteLog("New event received. "); 
           var replyMsg = "Acknowledged event."; 
           HelperMethods.WriteLog(replyMsg); 
           socket.Send(replyMsg, Encoding.UTF8); 
           HelperMethods.WriteLog("====================================================="); 
          } 
          catch (Exception ex) 
          { 
           HelperMethods.WriteLog("InitializeServer(): " + ex.Message + " | Stack Trace: " + ex.StackTrace); 
          } 
         } 
        } 
       } 
      } 

错误:

The type initializer for 'ZeroMQ.Interop.LibZmq' threw an exception. | at ZeroMQ.Interop.ContextProxy.Initialize() in C:\clrzmq\zeromq-clrzmq-v3.0.0-beta1-52-g0d83a1e\zeromq-clrzmq-0d83a1e\src\ZeroMQ\Interop\ContextProxy.cs:line 28 at ZeroMQ.ZmqContext.Create() in C:\clrzmq\zeromq-clrzmq-v3.0.0-beta1-52-g0d83a1e\zeromq-clrzmq-0d83a1e\src\ZeroMQ\ZmqContext.cs:line 78

我至今尝试过

  • 我已经安装了C++ redistrib可用包。
  • 我有禁用防火墙和增值服务的exe入站和出站规则
  • 我已经安装了.NET Framework 4.6.2
+0

您是否尝试过NetMQ?从zeromq到c#的一个端口可能会更简单。 https://github.com/zeromq/netmq – somdoron

回答

0

幸运的是,我发现this后,解决了我的问题。 对于任何面临同样问题的人,请尝试下载&安装VS2010 C++ redistributable ..

相关问题