文件被ARCsoc.exe锁定:
文件被ARCsoc.exe锁定:
例如:影像服务或者动态服务,会直接读取源文件,当我们想要操作源文件时,就会提示:文件被ARCsoc.exe锁定
可以通过arcgis rest api操作地图服务,比如停止地图服务:
$.ajax({
type: "POST",
url: "http://192.168.1.111:6080/arcgis/admin/services/"+serviceName+"Cache.ImageServer/stop",
data: {
'token': response.token,//携带的token
'f': "json"
},
dataType: "json" //dataType不能少
})
执行停止服务时需要token:
每次对地图服务操作时,都需要获取token进行操作
$.ajax({
type: "POST",
url: "http://192.168.1.111:6080/arcgis/admin/generateToken",
data: {
username: "test",//管理账号
password: "123456",//密码
client: "referer",//如果将值设置为Referer,则必须指定Referer参数。如果值为ip,则必须指定ip参数。如果值为requestip,则使用发出请求的IP地址。
referer: "http://192.168.1.111:6080",//项目地址,需要与接下啦进行的管理操作同源。
expiration: '60',//令牌必须有效的时间(以分钟为单位)。
f: "json"//响应格式。默认响应格式为html
},
dataType: "json",
});
拿token再进行地图服务管理操作:
var tokenvalue = $.ajax({
type: "POST",
url: "http://192.168.1.111:6080/arcgis/admin/generateToken",
data: {
username: "arcgis",
password: "123456",
client: "referer",
referer: "http://192.168.1.111:6080",//项目地址
expiration: '60',
f: "json"
},
dataType: "json",
});
if (tokenvalue) {
tokenvalue
.success(function (response) {
if (response.token) {
//成功生成token
console.log(response.token);
$.ajax({
type: "POST",
url: "http://192.168.1.111:6080/arcgis/admin/services/"+serviceName+"Cache.ImageServer/stop",
data: {
'token': response.token,
'f': "json"
},
dataType: "json"
})
}
}).error(function (err) {
console.log("操作失败。err:" + err);
});
}
帮助文档:
generatetoken: generatetoken
stopservice: stopservice
大佬的博客: ArcGIS api for javascript 3.x通过‘‘url?token=‘‘动态拼接的方式访问server的安全服务