ArcGIS Pro发布服务时出现“检查共享流程状态失败”错误( Failed to check sharing process status)

从1.3版本开始接触ArcGIS Pro,流畅的64位原生应用程序,靓丽的ribbon界面,二三维一体的极致体验,让我们看到变革的时候到来,传统的桌面使用相信现正在迁移过来,并且也在吸引大量新使用者。
ArcGIS Pro

但是我的机器在使用ArcGIS Pro发布服务时,总是出现Failed to check sharing process status,中文为:“检查共享流程状态失败”错误,从1.3,1.4,1.4Alpha4,2.0,2.0.1依然是这样。
Failed to check sharing process status
虽然状态检查失败,但并不影响服务发布,最后在Portal中都是可以看到发布成功的服务
开始我以为是软件没安装好,或者是Portal的配置有问题。于是尝试向ArcGIS Online上发布,还是同样的报错。
后来通过与同事以及美国Esri Support的沟通,他们提供了一个官方帮助文档链接http://pro.arcgis.com/zh-cn/pro-app/help/sharing/overview/sharing-job-status.htm
里面说到”可在 C:\Users<USERPROFILE>\AppData\Local\ESRI\ArcGISPro\Staging\SharingProcesses 中找到状态报告“
我按照自己用户名路径
C:\Users\Esri\AppData\Local\ESRI\ArcGISPro\Staging\SharingProcesses
然而并没有该路径的文件夹,也就是说出现这个报错,是因为ArcGIS Pro没有找到状态日志文件,那么日志写到哪去了呢?
通过文件夹搜索,最后找到了存储日志状态的文件夹。
路径为
C:\Users\Esri\ArcGISPro\AppData\Local\Esri\Staging\SharingProcesses
日志文件

到此,我们可以总结一下:当通过ArcGIS Pro发布服务时,状态日志并没有写到官方文档提到的C:\Users\esri\AppData\Local\ESRI\ArcGISPro\Staging\SharingProcesses路径下,却莫名其妙地写到C:\Users\Esri\ArcGISPro\AppData\Local\Esri\Staging\SharingProcesses里,对比一下两个路径,深度一致,可以看到ArcGISPro这个文件夹位置不同。从报错来看,ArcGIS Pro读取日志文件状态可能是按照官方文档说的路径。

因此,报错的机理算是找到了,但是为什么会造成路径不同呢?

美国Esri Support给出的建议是:新建一个操作系统账户,使用该账号登录系统,然后再发布服务看看是否还报错。
果然老美的尝试建议是没问题,不会再报错,日志写到正常的路径下。
然后老美解释是因为操作系统账户是corrupt user profile,这里我不知道如何翻译,但是问题在我的机器上并没有解决,不能为了这个问题,换一个操作系统账户。

想了许久这个问题。有以下猜想:
我的操作系统用户名是esri,ArcGIS Pro在安装的时候,会初始化用户路径,本来esri这个词是ArcGIS软件中关键字,就好比编写程序的变量名不能与该语言内设的关键字冲突一样。
所以ArcGIS Pro初始化状态日志路径出现了混乱现象。

上面说了那么多,问题始终可能会存在,那么有没有可行的解决方案呢?
经过多次尝试,答案是有的。

首先我尝试修改操作用户名,但貌似没什么用。网上说还需要修改对应用户名的注册表,感觉这么做有些风险,所以就放弃了。

好的,说到本质上来:就是找不到预设路径下的日志文件所致。那么为何不自己创建一个路径呢,然后将C:\Users\Esri\ArcGISPro\AppData\Local\Esri\Staging路径下的文件都实时同步过来。

这里就不得不提到曾经遇到的系统盘瘦身方案,利用windows自带的mklink命令,可以实现将默认C盘安装的应用程序文件(Adobe 全家桶)迁移到其他盘,程序仍然可以正常使用。

方案就这么形成了,
首先将C:\Users\Esri\ArcGISPro\AppData\Local\Esri中的Staging文件夹剪切到C:\Users\esri\AppData\Local\ESRI\ArcGISPro下,然后以管理员的身份打开cmd窗口
输入

1
mklink /J "C:\Users\esri\AppData\Local\ESRI\ArcGISPro\Staging" "C:\Users\Esri\ArcGISPro\AppData\Local\Esri\Staging"

然后会出现提示为”C:\Users\esri\AppData\Local\ESRI\ArcGISPro\Staging <<===>>C:\Users\Esri\ArcGISPro\AppData\Local\Esri\Staging”创建的联接
由于我已经链接过了,所以会有如下提示。实际这里就相当于在C:\Users\Esri\ArcGISPro\AppData\Local\Esri下放了C:\Users\esri\AppData\Local\ESRI\ArcGISPro中Staging文件夹的快捷方式,即文件夹的软连接,用过linux系统应该比较熟悉
cmd
接着用Pro发布一个服务试试,果然久未谋面的成功状态出现了。
发布成功

这个问题从用户来说,解决方法是避免使用esri这个操作系统用户名
从ArcGIS Pro开发者来看,尽早修复这个程序逻辑问题应该是最终解决之道。

突然想到一个搞笑案例,分享一下

调试一段有关用户名的程序,上午测试的时候还好好的,下午测试老是获取到null,怎么找都找不到原因,后来后台的哥们说他把用户名改成了“null”,嗯,现在坟头的草一丈多了。