博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDE操作的许可问题
阅读量:6923 次
发布时间:2019-06-27

本文共 1572 字,大约阅读时间需要 5 分钟。

ArcGIS二次开发和ArcGIS桌面应用中,许可是一个老生常谈的问题。以前也小结过一些经验。参考:

问题描述

直接来先看报错的代码:

这是很普通的连接Sql Server SDE的代码操作,

 

/// /// 获取工作空间public static IWorkspace GetWorkspace(IPropertySet pPropertySet) {    if (pPropertySet == null) {        return null;    }    // 创建 SDE 工作空间工厂,并打开工作空间      //Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");      //var workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);      IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactoryClass();    IWorkspace workspace = workspaceFactory.Open(pPropertySet, 0);    return workspace;}/// /// 转换成属性设置/// public static IPropertySet GePropertySet() {    IPropertySet pPropertySet = new PropertySetClass();    pPropertySet.SetProperty("SERVER", "服务器IP");    pPropertySet.SetProperty("INSTANCE", string.Format("sde:SQLServer:{0}", "服务器IP"));    pPropertySet.SetProperty("DATABASE", "数据库名称");    pPropertySet.SetProperty("USER", "sa");    pPropertySet.SetProperty("PASSWORD", "密码");    //pPropertySet.SetProperty("VERSION", "SDE.DEFAULT");    pPropertySet.SetProperty("AUTHENTICATION_MODE", "DBMS");    return pPropertySet;}

 

  

 

经测试SDE连接参数正常,可在Open方法时,报错"The Product License has not been initialized"(产品许可未初始化),程序是用代码初始化许可的,运行绑定Desktop,产品许可类别是Advanced(高级版)

解决问题

在相同的环境下,另外一套程序又可以,比较两者的不同,似乎与MapControl控件存在某种关联,经反复测试,得出以下结果:使用AO的sample作对比,只要是先拖放MapControl控件,代码就不会报许可问题(先拖放许可、或不拖MapControl都不行)。

暂时是解决了这个问题,我们姑且认为是10.4的bug,虽然没有使用MapControl,但也拖放了这个控件(隐藏)。

我一直在想,既然它都能报这个错,肯定不是什么bug,而不是我们不知道错在哪里,经过一番测试,最终于不是通过许可方式解决它了。即在代码初始化许可是除了添加Advanced许可,还添加了ArcServer许可

参考文章

 

转载地址:http://vbcjl.baihongyu.com/

你可能感兴趣的文章
在C\C++编程时常范的低级错误总结
查看>>
BZOJ3990:[SDOI2015]排序——题解
查看>>
socket
查看>>
AngularJS语法
查看>>
软件测试面试题汇总
查看>>
protobuf编码
查看>>
(转)递归的理解
查看>>
作业05:用户登录(三次机会)且每次输入错误显示剩余次数
查看>>
Java compiler level does not match the version of the installed Java project facet.
查看>>
laravel 杂项
查看>>
TRI 解题报告
查看>>
组合游戏题目泛做(SMZ第二轮)
查看>>
module_init的加载和释放
查看>>
JavaScript中的+= 是什么?
查看>>
find-the-difference
查看>>
算法的选择
查看>>
二分法查找(大于,大于等于x的最小,小于,小于等于x的最大值)
查看>>
Java基础-数据类型int,short,char,long,float,double,boolean,byte
查看>>
html5-6 Frame框架窗口类型
查看>>
HTML表单组件
查看>>