laptop and a wrench

漏洞

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 支持应用程序

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项