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地址,我可以收到一个回复。
我错过了一个参考吗?
我终于弄清了问题的真相。没有正确引用IBMU2.UODOTNET.dll
文件。
我认为这是因为它没有正确注册在我的机器上。
这就是我如何在我的机器上正确注册DLL(经过一点研究!)。
-
下载全局程序集缓存工具(Gacutil.exe)文档在这里
-
打开命令提示符
-
cd
到包含gacutil.exe
和UODOTNET.DLL
文件的目录 -
在命令行中输入如下命令:
gacutil.exe -i uodotnet.dll/nologo
返回的消息类似于"成功添加到缓存"。