UniObjects для .NET OpenSession () Исключение сокета - PullRequest
1 голос
/ 03 ноября 2011

Я пытаюсь запустить пример на моем компьютере, который поставляется в каталоге 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) в 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();

            }
        }
    }
}

Я могу пропинговать IP-адрес и получить ответ.

Мне не хватает ссылки?

1 Ответ

0 голосов
/ 04 ноября 2011

Мне удалось докопаться до сути проблемы. Он не ссылался должным образом на файл IBMU2.UODOTNET.dll.

Я думаю, это потому, что он не был должным образом зарегистрирован на моей машине.

Так я правильно зарегистрировал DLL на своем компьютере (после небольшого исследования!).

  1. Загрузите Global Cache Tool (Gacutil.exe) Документы здесь
  2. Открыть командную строку
  3. cd в каталог, содержащий файлы gacutil.exe и UODOTNET.DLL
  4. Введите в командной строке следующее:

    gacutil.exe -i uodotnet.dll / nologo

Сообщение назад было чем-то вроде «Успешно добавлено в кеш».

...