laptop and a wrench

Bogue

Cannot retrieve GPJobMessage when adding ArcGIS Server SOAP Web Services WSDL as a "Service Reference" in VS 2008.

Dernière publication: August 25, 2014 ArcGIS Server (.NET)
Numéro d’ID de bogue NIM047107
EnvoiJuly 28, 2009
Dernière modificationJune 5, 2024
S’applique àArcGIS Server (.NET)
Version trouvée9.3.1
Langue du programmeC#
Système d’exploitationWindows OS
Version du système d’exploitationVista
Version de correction10.1
StatutFixed

Solution de contournement

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()); }============================

Étapes pour reproduire

ID de bogue: NIM047107

Logiciel:

  • ArcGIS Server (.NET)

Recevoir une notification lorsque le statut d’un bogue change

Télécharger l’application Esri Support

En savoir plus sur ce sujet

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement