1

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

这个确切的代码只在我们的一台机器上完美运行。

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

每台机器都在同一个网络上,所有防火墙都被禁用。

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

SocketException 捕获!!!SystemNo such host is known[IBM U2][UODOTNET - UNIRPC][ErrorCode=81011] 主机名无效,或者主机没有响应来源:UniRPCConnection 类方法:Void set_Host(System.String)在 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 地址,我可以收到回复。

我缺少参考吗?

4

1 回答 1

0

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

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

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

  1. 在此处下载全局程序集缓存工具 (Gacutil.exe)文档

  2. 打开命令提示符

  3. cd到包含文件的目录gacutil.exeUODOTNET.DLL

  4. 在命令行中输入以下内容:

    gacutil.exe -i uodotnet.dll /nologo

返回的消息类似于“已成功添加到缓存”。

于 2011-11-04T12:35:04.003 回答