tmyd 2024-11-12 16:13 采纳率: 0%
浏览 25

用.net 8 开发API接口,在连接SDE 数据库时提示:产品许可证尚未初始化 (arcgis 10.8.2 相关插件)

在vs2022 下,用.net 8 开发API接口,在连接SDE 数据库时,提示:产品许可证尚未初始化 。

采用的是破解版的 arcgis desktop 10.8.2 相关dll。 也对授权验证都进行了测试,代码均返回true,但 open 时 ,依然提示 :The Product License has not been initialized

代码如下:


```c#
   ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
   IAoInitialize m_aoinitialize = new AoInitializeClass();
  m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
  m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard);
   m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeBasic);
   m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
    m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcServer);
  m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
 
 
   var factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
   var workspaceFactory = (SdeWorkspaceFactory)Activator.CreateInstance(factoryType);

   IPropertySet propertySet = new PropertySetClass();
   string arc_server = "192.168.8.160";
   string arc_instance = "sde: oracle11g: 127.0.0.1/MYDB"; 
                                                   
   string arc_database = "MYDB";
   string arc_user = "sde";
   string arc_pwd = "sde";
   string arc_version = "sde.DEFAULT";
   propertySet.SetProperty("SERVER", arc_server);
   propertySet.SetProperty("Instance", arc_instance);
   propertySet.SetProperty("Database", arc_database);
   propertySet.SetProperty("User", arc_user);
   propertySet.SetProperty("Password", arc_pwd);
   propertySet.SetProperty("Version", arc_version);

   IWorkspace workspace = workspaceFactory.Open(propertySet, 0);//<——————这里报错



  • 写回答

2条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-11-15 22:17
    关注

    本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢

    1. 问题分析
      • 虽然对授权验证进行了测试且代码返回true,但在Open操作时仍提示许可证未初始化。这可能是由于破解版软件在某些情况下未能正确模拟完整的许可证初始化流程。
      • 即使调用了多个Initialize方法,可能在与SDE数据库连接的特定环节中,某些依赖的许可证组件没有被正确设置。
    2. 可能的解决方案
      • 检查许可证安装和配置
        • 对于破解版软件,确保所有与许可证相关的文件和配置正确。尽管这是破解版,但可能存在部分配置缺失。例如,某些破解版可能需要特定的环境变量设置或者额外的配置文件。
        • 检查ArcGIS的安装目录下是否存在与许可证相关的文件,如.lic文件等,并且确保其格式正确(虽然破解版的正确性难以保证,但可以检查是否存在明显错误)。
      • 重新审视授权验证逻辑
        • 在代码中,虽然多个Initialize方法返回true,但可能存在隐藏的问题。可以尝试在每个Initialize方法调用后添加一些日志输出,查看是否真正成功初始化了相应的许可证组件。例如:
          ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
          IAoInitialize m_aoinitialize = new AoInitializeClass();
          esriLicenseStatus status = m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
          Console.WriteLine($"Advanced license initialization status: {status}");
          status = m_aoinitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard);
          Console.WriteLine($"Standard license initialization status: {status}");
          // 以此类推,对其他Initialize方法也添加类似的日志输出
          
      • 检查SDE连接参数
        • 确保SDE连接参数正确。例如,arc_serverarc_instancearc_databasearc_userarc_pwdarc_version这些参数。可能存在数据库服务器名称、实例名称、数据库名称、用户、密码或者版本号错误的情况。
        • 可以尝试使用ArcGIS桌面软件(如果可用),使用相同的连接参数连接到SDE数据库,看是否能够成功连接。如果在桌面软件中也无法连接,那么很可能是连接参数的问题。
      • 考虑使用合法版本(如果可能)
        • 破解版软件可能存在各种未知的问题,包括兼容性和稳定性问题。如果条件允许,使用合法版本的ArcGIS软件可能会避免这些许可证相关的问题。合法版本的软件经过严格测试,并且有官方的技术支持,可以更有效地解决连接数据库过程中遇到的问题。
    评论

报告相同问题?

问题事件

  • 创建了问题 11月12日