1

I'm trying to get an example running on my computer which comes packaged in the C:\IBM\UniDK\uonet\samples\C# directory. The name of the project is UniSelectList.

This exact code, works perfectly on just one of our machines.

At first I thought it may be a wrong reference to the DLL file IBMU2.UODOTNET, but even taking the DLL file from the working machine does not allow it to run.

Each machine is on the same network, all firewalls disabled.

This is the exception message that we're receiving:

SocketException caught!!!SystemNo such host is known[IBM U2][UODOTNET - UNIRPC][ErrorCode=81011] The host name is not valid, or the host is not responding Source: UniRPCConnection Class Method: Void set_Host(System.String) at IBMU2.UODOTNET.UniRPCConnection.set_Host(String value) at 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();

            }
        }
    }
}

I can ping the IP address and I can receive a reply.

Am I missing a reference?

Luke
  • 22,826
  • 31
  • 110
  • 193
  • First, since the path indicates 'IBM', I'll let you know that [Rocket Software](http://www.rocketsoftware.com/u2) now owns this software. This means there are newer versions of the software you could possibly be using. – Dan McGrath Nov 03 '11 at 18:46
  • @DanMcGrath Thanks for the information, it's true it's owned by Rocket Software now. I'm pretty sure this is the latest version. – Luke Nov 04 '11 at 12:29

1 Answers1

0

I managed to get to the bottom of the problem. It was not referencing properly to the IBMU2.UODOTNET.dll file.

I think it's because it was not properly registered on my machine.

This is how I registered the DLL properly on my machine (After a bit of research!).

  1. Download the Global Assembly Cache Tool (Gacutil.exe) Docs here

  2. Open command prompt

  3. cd to the directory which contains the files gacutil.exe and UODOTNET.DLL

  4. Enter the following in to the command line:

    gacutil.exe -i uodotnet.dll /nologo

The message back was something along the lines of "Successfully added to the cache".

Community
  • 1
  • 1
Luke
  • 22,826
  • 31
  • 110
  • 193