I was trying to load data from this feature service "https://services.arcgis.com/BLN4oKB0N1YSgvY8/ArcGIS/rest/services/CalOES_California_Webcams/FeatureServer/1" into a ServiceFeatureTable object, the 10.2.7 .Net runtime threw the following exception:
Microsoft C++ exception: Esri_runtimecore::Geodatabase::Field_not_found_exception at memory location 0x000000922D63D030.
The object was unable to get any data from the service. I'm on VS Community 2017 v15.9.26 and .Net 4.6.2.
The other services from the same server are working fine. Is it possible solving it without upgrading to 100.1 or above?
Thank you for your help.
Solved! Go to Solution.
Hi,
Unfortunately I too found that when using 10.2.7 with that service the ServiceFeatureTable fails to initialize (with the exception you observed). I was unable to identify what is specific to your service that is causing the issue (I compared your service with a variety of similar hosted feature services, including services based on views, and they all initialized and displayed).
100.x does successfully load and display this service.
Here's a potential workaround you could use:
Map map = new Map
{
SpatialReference = SpatialReferences.WebMercator,
};
MyMapView.Map = map;
MyMapView.Map.Layers.Add(new ArcGISTiledMapServiceLayer(new Uri("https://sampleserver6.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer")));
var queryTask = new QueryTask(new Uri("https://services.arcgis.com/BLN4oKB0N1YSgvY8/ArcGIS/rest/services/CalOES_California_Webcams/FeatureServer/1"));
var queryResult = await queryTask.ExecuteAsync(new Query("1=1"));
var features = queryResult.FeatureSet.Features;
var graphicsOverlay = new GraphicsOverlay();
graphicsOverlay.Graphics.AddRange(queryResult.FeatureSet.Features.OfType<Graphic>());
SimpleRenderer simpleRenderer = new SimpleRenderer()
{
Symbol = new SimpleFillSymbol()
{
Color = Color.FromArgb(0, 92, 230, 49),
Outline = new SimpleLineSymbol()
{
Color = Color.FromArgb(110, 110, 110, 0),
Style = SimpleLineStyle.Solid,
Width=0.7
}
}
};
graphicsOverlay.Renderer = simpleRenderer;
MyMapView.GraphicsOverlays.Add(graphicsOverlay);
Hi,
That error could indicate that a field used for the renderer or label definition is not part of the layer's schema, although the service info (below) shows that it's just a simple renderer with no labels.
`{"renderer":{"type":"simple","symbol":{"type":"esriSFS","style":"esriSFSSolid","color":[0,92,230,49],"outline":{"type":"esriSLS","style":"esriSLSSolid","color":[110,110,110,0],"width":0.7}}},"scaleSymbols":true,"transparency":0,"labelingInfo":null}`
In your code are you applying a renderer or label definition?
You could also try request all fields e.g.
`myServiceFeatureTable.OutFields = Esri.ArcGISRuntime.Tasks.Query.OutFields.All;`
Thanks
Mike
Thank you, Mike. I followed the suggestion to set the table object's property to equest all fields but still, the problem occurred, and the table was not populated. I didn't apply a renderer or label definition to the layer object in my code. Were you able to replicate it in 10.2.7?
Hi,
Unfortunately I too found that when using 10.2.7 with that service the ServiceFeatureTable fails to initialize (with the exception you observed). I was unable to identify what is specific to your service that is causing the issue (I compared your service with a variety of similar hosted feature services, including services based on views, and they all initialized and displayed).
100.x does successfully load and display this service.
Here's a potential workaround you could use:
Map map = new Map
{
SpatialReference = SpatialReferences.WebMercator,
};
MyMapView.Map = map;
MyMapView.Map.Layers.Add(new ArcGISTiledMapServiceLayer(new Uri("https://sampleserver6.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer")));
var queryTask = new QueryTask(new Uri("https://services.arcgis.com/BLN4oKB0N1YSgvY8/ArcGIS/rest/services/CalOES_California_Webcams/FeatureServer/1"));
var queryResult = await queryTask.ExecuteAsync(new Query("1=1"));
var features = queryResult.FeatureSet.Features;
var graphicsOverlay = new GraphicsOverlay();
graphicsOverlay.Graphics.AddRange(queryResult.FeatureSet.Features.OfType<Graphic>());
SimpleRenderer simpleRenderer = new SimpleRenderer()
{
Symbol = new SimpleFillSymbol()
{
Color = Color.FromArgb(0, 92, 230, 49),
Outline = new SimpleLineSymbol()
{
Color = Color.FromArgb(110, 110, 110, 0),
Style = SimpleLineStyle.Solid,
Width=0.7
}
}
};
graphicsOverlay.Renderer = simpleRenderer;
MyMapView.GraphicsOverlays.Add(graphicsOverlay);
Awesome, this is exactly what I needed. Thank you so much for your help!