UniObjects for .NET OpenSession() Socket Exception

本文关键字:Socket Exception OpenSession for NET UniObjects | 更新日期: 2023-09-27 18:13:10

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

这段代码,只在我们的一台机器上运行得很好。

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

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

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

SocketException了! !SystemNo这样的主机是已知的[IBM U2][UODOTNET - UNIRPC][ErrorCode=81011]主机名无效,或者主机没有响应来源:UniRPCConnection类方法:Void set_Host(System.String) at IBMU2.UODOTNET.UniRPCConnection。set_Host(字符串值)在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地址,我可以收到一个回复。

我错过了一个参考吗?

UniObjects for .NET OpenSession() Socket Exception

我终于弄清了问题的真相。没有正确引用IBMU2.UODOTNET.dll文件。

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

这就是我如何在我的机器上正确注册DLL(经过一点研究!)。

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

  2. 打开命令提示符

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

  4. 在命令行中输入如下命令:

    gacutil.exe -i uodotnet.dll/nologo

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