The UpdateConnectionProperties method appends "URL=" to the Server parameter of the updated layer, resulting in a broken data source.
ArcGIS Pro
漏洞 ID 编号
BUG-000171987
已提交
November 4, 2024
上次修改时间
October 20, 2025
适用范围
ArcGIS Pro
找到的版本
3.2.4
操作系统
Windows OS
操作系统版本
11.0 64 bit
状态
Under Consideration
该问题已由开发团队审核。 其尚未被优先纳入发布计划,但将对其进行监控以确定总体影响。 在优先级排序过程中考虑的因素包括受影响或请求功能的用户数量、业务影响、是否存在解决方法等。 如果漏洞对您的业务产生不利影响,请参阅“操作方法:升级缺陷”(https://support.esri.com/en/technical-article/000024129)。
附加信息
Unlike Feature Services and many other data types, Map Services are not yet supported in the function. Map Services are also not supported in the Update Data Sources panel within the Catalog View in ArcGIS Pro. By setting the function, you are forcing the new URL into the layer, even though it is currently unsupported. If you set it, the layer will not be updated, which is by design until Map Services are officially supported.
But you can modify the CIM definition of the layer like this to update the Map Service URL:
aprx = arcpy.mp.ArcGISProject('current')
m = aprx.listMaps('Map')[0]
lyr = m.listLayers('PyUnit10931_2')[0]
c = lyr.getDefinition('V3')
c.serviceConnection.url = 'https://tiles.arcgis.com/tiles/k4wsDILUIGeQ5HvW/arcgis/rest/services/MyServiceName/MapServer'
lyr.setDefinition(c)
More information on the CIM can be found here: https://pro.arcgis.com/en/pro-app/latest/arcpy/mapping/python-cim-access.htm
And here: https://pro.arcgis.com/en/pro-app/latest/arcpy/mapping/updatingandfixingdatasources.htm#ESRI_SECTION1_DD16BE1F4AC54F078A04C84BD22C8D9B:~:text=%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ConPropsWithJoins(cp)-,Updating%20data%20sources%20using%20the%20CIM,-Starting%20with%20ArcGIS
解决办法
Unlike Feature Services and many other data types, Map Services are not yet supported in UpdateConnectionProperties at this time. But you can modify the CIM definition of the layer like this:
aprx = arcpy.mp.ArcGISProject('current')
m = aprx.listMaps('Map')[0]
lyr = m.listLayers('PyUnit10931_2')[0]
c = lyr.getDefinition('V3')
c.serviceConnection.url = 'https://tiles.arcgis.com/tiles/k4wsDILUIGeQ5HvW/arcgis/rest/services/MyServiceName/MapServer'
lyr.setDefinition(c)
More information on the CIM can be found here: https://pro.arcgis.com/en/pro-app/latest/arcpy/mapping/python-cim-access.htm
And here: https://pro.arcgis.com/en/pro-app/latest/arcpy/mapping/updatingandfixingdatasources.htm#ESRI_SECTION1_DD16BE1F4AC54F078A04C84BD22C8D9B:~:text=%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ConPropsWithJoins(cp)-,Updating%20data%20sources%20using%20the%20CIM,-Starting%20with%20ArcGIS