2017-03-13 42 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 ..

相關問題