当前位置: 首页 > news >正文

错误备忘_ArcGIS_MatLab_ArcGIS 和 MatLab 集成时权限问题造成 MatLab 做图抛出系统内存错误...

本文内容

  • 背景
  • 开发环境
  • 错误表现
  • 错误分析
  • 解决方案

 

背景

08 年毕业时,参加一个项目,由好几家公司共同开发,我们公司做数据仓库部分,包括建立数据仓库和开发之上的数据仓库管理系统。其中,我们公司将 OLAP 分析子系统包给了一个大学,之后再进行系统集成。OLAP 子系统包含用 ArcGIS 开发的地理信息展示和用 MatLab 开发做图分析功能等。

 

开发环境

开发环境:

  • 客户端:Windows 2003 Server、IE 6+、VS 2005、MatLab 2009b
  • 服务器端:Windows 2003 Server、IIS 6、ArcGIS SDE 9.3.2、MatLab 2009b runtime

 

错误表现

当 Web 应用程序同时涉及 GIS 和 MatLab 开发时,MatLab 做图时会抛出系统内存异常错误,该错误不可再现。如果抛出此错误,则之后虽然也可做图,但将始终出现该错误提示窗口。而 GIS 应用程序运行正常。

 

 

错误分析

起初认为是 MatLab 自己的 BUG,毕竟这个程序太大了,跟 GIS 有得拼,于是反编译 MatLab 的核心 dll 文件,希望通过研究它的底层实现来规避这个问题。还对 IIS 进行了各种设置,也不能解决该问题——系统集成是件痛苦的事,有太多不可预知的问题出现。

再后来,认为 GIS 和 MatLab 有冲突,但是冲突在什么地方,不得而知。

 

解决方案

发现问题的所在,有点巧合。既然 GIS 部分的应用程序没问题,那就先不管它。把 MatLab 应用程序独立出来,再删掉 Web.config 文件中关于 GIS 的所有配置,但运行时,还是报错,调试来调试去,设置来设置去,还是不好使……最终,我查看了 machine.config 文件,既然该文件对 Web 应用程序来说,是“大环境”,那留点最基本的就好了,就无意间删掉了 <identity impersonate="true" userName="主机名\用户名" password="密码"/> 小节。还在研究时,突然同事说:“好使了!”,惊异地看着我说:“你改什么东西?”我当时一顿回忆……根据时间点,应该是 identity 小节。于是,立刻意识到,也许问题真在这里……

我们知道,

  1. 在页面上显示底图,并将图层数据叠加到底图上。访问空间数据库 ArcSDE 需要权限。此过程,ArcGIS 会在 Web.config 文件中自动添加 <identity impersonate="true" userName="主机名\用户名" password="密码"/> 小节;
  2. machine.config 和 Web.config 文件,前者是针对一台 Web 服务器,后者是针对某个 Web 应用程序。一台 Web 服务器可以有多个 Web 应用程序。machine.config 文件会作用在所有 Web 应用程序上。

而原因正是在 <identity impersonate="true" userName="主机名\用户名" password="密码"/> 这句话,虽然 GIS 需要,但是 MatLab 完全不需要,有这个小节 MatLab 做图时反而抛出异常。知道问题所在后,解决就很简单了。

  • 首先,取保 machine.config 文件不配置该节,干净点;
  • 其次,将 Web 应用程序中的 GIS 部分和 MatLab 部分,其一拆成另一个 Web 应用程序,并将其改成虚拟目录,集成在一起。

相关文章:

  • 计算IMEI号的校验位
  • 删除所有的用户表,存储过程,游标的应用,动态SQL的使用
  • 简单的回顾
  • Memcached的线程模型及状态机
  • pre标签内文本自动换行
  • 最大熵工具包的使用
  • iptables开启,通过nginx无法访问php程序
  • 在linux系统(CentOS)上安装中文支持包
  • Android -- Glide框架详解(一)
  • win7下开启web服务器
  • Graylog2+Elasticsearch+Nxlog
  • 初到51CTO
  • iOS多线程与网络开发之小文件上传
  • sqlserver 语句
  • 动态规划 List
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • ES6 ...操作符
  • JavaScript HTML DOM
  • JavaScript函数式编程(一)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Mysql5.6主从复制
  • pdf文件如何在线转换为jpg图片
  • Redis的resp协议
  • 初探 Vue 生命周期和钩子函数
  • 从伪并行的 Python 多线程说起
  • 后端_MYSQL
  • 开发基于以太坊智能合约的DApp
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端知识点整理(待续)
  • 如何设计一个微型分布式架构?
  • 如何优雅地使用 Sublime Text
  • 数据可视化之 Sankey 桑基图的实现
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 为视图添加丝滑的水波纹
  • 优秀架构师必须掌握的架构思维
  • 原生Ajax
  • elasticsearch-head插件安装
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • #HarmonyOS:Web组件的使用
  • #单片机(TB6600驱动42步进电机)
  • #在 README.md 中生成项目目录结构
  • (02)Hive SQL编译成MapReduce任务的过程
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (23)Linux的软硬连接
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C语言)fgets与fputs函数详解
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (剑指Offer)面试题34:丑数
  • (力扣题库)跳跃游戏II(c++)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020