我正在尝试在我的计算机上运行一个示例,该示例打包在C:\IBM\UniDK\uonet\samples\C#
目录中。项目名称为UniSelectList
。
这个确切的代码只适用于我们的一台机器。
起初我认为它可能是对DLL文件IBMU2.UODOTNET
的错误引用,但即使从工作机器获取DLL文件也不允许它运行。
每台计算机都在同一网络上,所有防火墙都已禁用。
这是我们收到的异常消息:
SocketException被抓住!!! SystemNo这样的主机是已知的[IBM U2] [UODOTNET - UNIRPC] [ErrorCode = 81011]主机名无效,或主机没有响应源:UniRPCConnection类方法:Void set_Host(系统.String)at 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地址,我可以收到回复。
我错过了参考资料吗?
答案 0 :(得分:0)
我设法找到问题的根源。它没有正确引用IBMU2.UODOTNET.dll
文件。
我认为这是因为它没有在我的机器上正确注册。
这就是我在我的机器上正确注册DLL的方法(经过一些研究!)。
cd
到包含文件gacutil.exe
和UODOTNET.DLL
在命令行中输入以下内容:
gacutil.exe -i uodotnet.dll / nologo
回复信息的内容与“成功添加到缓存”的内容类似。