UniObjects for .NET OpenSession()套接字异常

时间:2011-11-03 15:08:04

标签: c# .net database-connection uniobjects

我正在尝试在我的计算机上运行一个示例,该示例打包在C:\IBM\UniDK\uonet\samples\C#目录中。项目名称为UniSelectList

这个确切的代码只适用于我们的一台机器。

起初我认为它可能是对DLL文件IBMU2.UODOTNET的错误引用,但即使从工作机器获取DLL文件也不允许它运行。

每台计算机都在同一网络上,所有防火墙都已禁用。

这是我们收到的异常消息:

  

SocketException被抓住!!! SystemNo这样的主机是已知的[IBM U2] [UODOTNET - UNIRPC] [ErrorCode = 81011]主机名无效,或主机没有响应源:UniRPCConnection类方法:Void set_Host(系统.String)at IBMU2.UODOTNET.UniRPCConnection.set_Host(String value)      在IBMU2.UODOTNET.UniSession.Connect()

using System;
using IBMU2.UODOTNET;

namespace IBMU2.Samples.UniSelectListSample
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class UniSelectListSample
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            UniSession us1=null;

            try
            {

                us1 = UniObjects.OpenSession("92.0.0.1","username","password","play/PLAYSMD","uvcs");

                UniSelectList sl = us1.CreateUniSelectList(2);

                // Select UniFile
                UniFile fl = us1.CreateUniFile("SLCUST");
                sl.Select(fl);

                bool lLastRecord = sl.LastRecordRead;

                while(!lLastRecord)
                {
                    string s = sl.Next();
                    Console.WriteLine("Record ID:" + s);
                    lLastRecord = sl.LastRecordRead;
                }

            }
            catch(Exception e)
            {
                if(us1 != null && us1.IsActive)
                {
                    UniObjects.CloseSession(us1);
                    us1= null;
                }
                Console.WriteLine("");
                string s = "Connection Failed : " + e.Message;
                Console.WriteLine(s);
            }
            finally
            {
                if(us1 != null && us1.IsActive)
                {
                    Console.WriteLine("");
                    string s = "Connection Passed";
                    Console.WriteLine(s);
                    UniObjects.CloseSession(us1);
                }

                Console.ReadLine();

            }
        }
    }
}

我可以ping IP地址,我可以收到回复。

我错过了参考资料吗?

1 个答案:

答案 0 :(得分:0)

我设法找到问题的根源。它没有正确引用IBMU2.UODOTNET.dll文件。

我认为这是因为它没有在我的机器上正确注册。

这就是我在我的机器上正确注册DLL的方法(经过一些研究!)。

  1. 下载全局程序集缓存工具(Gacutil.exe)Docs here
  2. 打开命令提示符
  3. cd到包含文件gacutil.exeUODOTNET.DLL
  4. 的目录
  5. 在命令行中输入以下内容:

      

    gacutil.exe -i uodotnet.dll / nologo

  6. 回复信息的内容与“成功添加到缓存”的内容类似。