获取应用程序中的漏洞更新
URL 已复制
共享 URL
漏洞
Cannot retrieve GPJobMessage when adding ArcGIS Server SOAP Web Services WSDL as a "Service Reference" in VS 2008.
上次发布: August 25, 2014
ArcGIS Server (.NET)
漏洞 ID 编号
NIM047107
已提交
July 28, 2009
上次修改时间
June 5, 2024
适用范围
ArcGIS Server (.NET)
找到的版本
9.3.1
编程语言
C#
操作系统
Windows OS
操作系统版本
Vista
修正版本
10.1
状态
Fixed
此漏洞已得到修复。 有关详细信息,请参阅“版本修复”和“其他信息”(如果适用)。
解决办法
Testing code of pure SOAP api=====================string endpoint = "
http://xuening931/arcgis/services/Buffer_Features/GPServer
"; ESRI.ArcGIS.ADF.ArcGISServer.GPServerProxy gpserverproxy = new ESRI.ArcGIS.ADF.ArcGISServer.GPServerProxy(endpoint); ESRI.ArcGIS.ADF.ArcGISServer.GPToolInfo gpti = (ESRI.ArcGIS.ADF.ArcGISServer.GPToolInfo)gpserverproxy.GetToolInfo("Buffer Points"); ESRI.ArcGIS.ADF.ArcGISServer.GPParameterInfo[] paramInfos = gpti.ParameterInfo; ESRI.ArcGIS.ADF.ArcGISServer.GPParameterInfo paramInfo; // Create input points ESRI.ArcGIS.ADF.ArcGISServer.GPFeatureRecordSetLayer gpfrs = (ESRI.ArcGIS.ADF.ArcGISServer.GPFeatureRecordSetLayer)paramInfos[0].Value; PointN p1 = new PointN(); p1.X = -87.839748099; p1.Y = 41.6286667210001; ESRI.ArcGIS.ADF.ArcGISServer.RecordSet rs = gpfrs.RecordSet; ESRI.ArcGIS.ADF.ArcGISServer.Fields flds = rs.Fields; object[] o = new object[flds.FieldArray.Length]; ESRI.ArcGIS.ADF.ArcGISServer.Record rec = new ESRI.ArcGIS.ADF.ArcGISServer.Record(); for (int i = 0; i < flds.FieldArray.Length; i++) { if (flds.FieldArray[i].Name == gpfrs.ShapeFieldName) { o[i] = p1; } else if (flds.FieldArray[i].Name == gpfrs.OIDFieldName) { o[i] = 1; } else { ESRI.ArcGIS.ADF.ArcGISServer.esriFieldType ftype = flds.FieldArray[i].Type; if (ftype == ESRI.ArcGIS.ADF.ArcGISServer.esriFieldType.esriFieldTypeString) { o[i] = string.Empty; } else { o[i] = 1; } } } rec.Values = o; ESRI.ArcGIS.ADF.ArcGISServer.Record[] recs = new ESRI.ArcGIS.ADF.ArcGISServer.Record[1]; recs[0] = rec; gpfrs.RecordSet.Records = recs; ESRI.ArcGIS.ADF.ArcGISServer.GPLinearUnit linear = new ESRI.ArcGIS.ADF.ArcGISServer.GPLinearUnit(); linear.Units = esriUnits.esriFeet; linear.Value = 500; ESRI.ArcGIS.ADF.ArcGISServer.GPValue[] gpvalues = new ESRI.ArcGIS.ADF.ArcGISServer.GPValue[1]; gpvalues[0] = gpfrs; string JobID = gpserverproxy.SubmitJob(
gpti.Name
, gpvalues, null, null); ESRI.ArcGIS.ADF.ArcGISServer.JobMessage[] jobmes = (ESRI.ArcGIS.ADF.ArcGISServer.JobMessage[])gpserverproxy.GetJobMessages(JobID); System.Diagnostics.Debug.Print("job message: " + jobmes[0].MessageDesc); // Check status of job, if finished and succeeded then proceed - false delay while (gpserverproxy.GetJobStatus(JobID) != ESRI.ArcGIS.ADF.ArcGISServer.esriJobStatus.esriJobSucceeded) { System.Threading.Thread.Sleep(5000); } ESRI.ArcGIS.ADF.ArcGISServer.GPResultOptions gpro = null; ESRI.ArcGIS.ADF.ArcGISServer.GPResult result = gpserverproxy.GetJobResult(JobID, null, gpro);=====================Testing code for web reference.============================try { string endpoint = "
http://xuening931/arcgis/services/Buffer_Features/GPServer
"; myWebRef.Buffer_Features_GPServer gpserverproxy = new myWebRef.Buffer_Features_GPServer(); gpserverproxy.Url = endpoint; myWebRef.GPToolInfo gpti = (myWebRef.GPToolInfo)gpserverproxy.GetToolInfo("Buffer Points"); myWebRef.GPParameterInfo[] paramInfos = gpti.ParameterInfo; myWebRef.GPParameterInfo paramInfo; // Create input points myWebRef.GPFeatureRecordSetLayer gpfrs = (myWebRef.GPFeatureRecordSetLayer)paramInfos[0].Value; myWebRef.PointN p1 = new myWebRef.PointN(); p1.X = -87.839748099; p1.Y = 41.6286667210001; myWebRef.RecordSet rs = gpfrs.RecordSet; myWebRef.Fields flds = rs.Fields; object[] o = new object[flds.FieldArray.Length]; myWebRef.Record rec = new myWebRef.Record(); for (int i = 0; i < flds.FieldArray.Length; i++) { if (flds.FieldArray[i].Name == gpfrs.ShapeFieldName) { o[i] = p1; } else if (flds.FieldArray[i].Name == gpfrs.OIDFieldName) { o[i] = 1; } else { myWebRef.esriFieldType ftype = flds.FieldArray[i].Type; if (ftype == myWebRef.esriFieldType.esriFieldTypeString) { o[i] = string.Empty; } else { o[i] = 1; } } } rec.Values = o; myWebRef.Record[] recs = new myWebRef.Record[1]; recs[0] = rec; gpfrs.RecordSet.Records = recs; myWebRef.GPLinearUnit linear = new myWebRef.GPLinearUnit(); linear.Units = myWebRef.esriUnits.esriFeet; linear.Value = 500; myWebRef.GPValue[] gpvalues = new myWebRef.GPValue[1]; gpvalues[0] = gpfrs; myWebRef.GPResultOptions option = new myWebRef.GPResultOptions(); myWebRef.PropertySet property = new myWebRef.PropertySet(); string JobID = gpserverproxy.SubmitJob(
gpti.Name
, gpvalues, option, property); myWebRef.JobMessage[] jobmes = (myWebRef.JobMessage[])gpserverproxy.GetJobMessages(JobID); System.Diagnostics.Debug.Print("job message: " + jobmes[0].MessageDesc); // Check status of job, if finished and succeeded then proceed - false delay while (gpserverproxy.GetJobStatus(JobID) != myWebRef.esriJobStatus.esriJobSucceeded) { System.Threading.Thread.Sleep(5000); } myWebRef.GPResultOptions gpro = null; myWebRef.GPResult result = gpserverproxy.GetJobResult(JobID, null, gpro); int len = result.Messages.Length; for (int i = 0; i < len; i++) { System.Diagnostics.Debug.Print("MessageDesc: " + result.Messages[i].MessageDesc.ToString()); System.Diagnostics.Debug.Print("MessageType: " + result.Messages[i].MessageType.ToString()); } } catch (Exception ex) { System.Diagnostics.Debug.Print(ex.Message.ToString()); }============================
重现步骤
漏洞 ID: NIM047107
软件:
ArcGIS Server (.NET)
当漏洞状态发生变化时获得通知
下载 Esri 支持应用程序
发现关于本主题的更多内容
Esri Community
搜索相关信息
Training
查找与此主题相关的培训
ArcGIS Ideas
探索想法并提供反馈
获取来自 ArcGIS 专家的帮助
联系技术支持部门
下载 Esri 支持应用程序
转至下载选项