折腾半宿终于搞定 arcgis api本地部署iis 的那些坑,别踩了
今天真有点累。
搞了八年的GIS,什么大场面没见过。
但这次 arcgis api本地部署iis 还是让我头大。
很多人觉得这很简单。
拖进去,配个IIS,完事。
呵,天真。
我昨天试了整整一下午。
服务器是Win Server 2019。
IIS版本是10.0。
ArcGIS API for JavaScript 4.28。
看起来配置很完美。
结果打开页面,一片白。
控制台报错:404 Not Found。
我就纳闷了。
文件明明都在啊。
后来查了半天。
发现是MIME类型没配。
IIS默认不认识.js.map文件。
也不认识.css.map。
这就导致资源加载失败。
虽然不影响核心功能。
但调试起来简直要命。
特别是对于 arcgis api本地部署iis 这种场景。
本地调试是常态。
你没法指望在线CDN永远稳定。
尤其是内网环境。
或者对数据安全性要求高的项目。
这时候本地部署就是刚需。
我总结了一下。
大概有三个大坑。
第一,就是刚才说的MIME。
第二,路径问题。
第三,跨域问题。
先说路径。
很多人习惯把API文件夹直接扔在wwwroot根目录。
这样访问起来方便。
http://localhost/arcgis/4.28/
但是。
如果你的网站本身就在根目录。
或者有其他静态资源。
很容易冲突。
建议单独建一个站点。
或者用虚拟目录。
这样隔离得好。
避免互相干扰。
再说说跨域。
这个最头疼。
如果你调的是本地GeoServer或者ArcGIS Server。
端口不一样。
比如IIS是80。
GeoServer是8080。
这时候浏览器直接拦截。
CORS策略生效。
解决办法有两个。
一个是改后端。
在GeoServer里加CORS头。
另一个是前端代理。
用Nginx或者IIS的URL重写。
我一般选后者。
因为改后端权限不够。
而且容易影响其他服务。
在IIS里装个URL Rewrite模块。
写几条规则。
把/api的请求转发到8080端口。
这样前端无感知。
就像在同一个域下一样。
亲测有效。
数据对比一下。
之前用在线CDN。
加载速度平均1.2秒。
但内网用户访问。
因为要穿过防火墙。
经常超时。
现在本地部署。
首屏加载0.3秒。
稳定得一批。
虽然前期配置麻烦点。
但长远看。
值得。
特别是对于 arcgis api本地部署iis 这种需求。
很多文档写得云里雾里。
只说怎么下载。
不说怎么配环境。
我这篇算是填坑。
最后总结一下。
别急着部署。
先检查MIME类型。
再规划好路径结构。
最后搞定跨域代理。
这三步走稳了。
基本就没问题了。
别信那些一键部署的脚本。
大部分是坑。
还是手动配靠谱。
虽然慢点。
但心里踏实。
毕竟GIS项目。
容错率低。
地图歪一毫米。
业务就停摆。
所以。
细心点。
再细心点。
希望这篇能帮到你。
少走弯路。
就是最大的善意。
共勉。