Hi,
I have developed a custom evaluator in order to extend a network dataset for Route analysis. The extension class has been developed with ArcObjects 10.3.1 in C#. I have registered the extension class with ESRIRegAsm utility.
I have use the custom evaluator in a cost attribute of a network dataset called RutadoFeatureDataSet_ND2. The Route analysis works when I execute the analysis with ArcMap.
On the other hand, I have developed a WebService with ArcObjects 10.3.1 in C#. This WebService executes a Route analysis on the network dataset RutadoFeatureDataSet_ND2 using the cost attribute with the custom evaluator. If I run the WebService with Visual Studio, the Route analysis works. But If I run the WebService with IIS 7.5, the Route analysis fails. This is the error message:
2016-05-23 17:40:41,191 ERROR: Rutado.Logic.NetworkDataSetManager (Rutado.Logic.NetworkDataSetManager.LoadGetNetworkDataset:0) - Error al obtener el network dataset sde.SDE.RutadoFeatureDataSet_ND2
System.Runtime.InteropServices.COMException (0x80042603): Excepción de HRESULT: 0x80042603
en ESRI.ArcGIS.Geodatabase.IDatasetContainer3.get_DatasetByName(esriDatasetType Type, String Name)
en Rutado.Logic.NetworkDataSetManager.LoadGetNetworkDataset(IFeatureDataset featureDataset, String networkDatasetName)
The "HRESULT:0x80042603" means: The item does not have a definition. It is the same error I get when I load the the network dataset RutadoFeatureDataSet_ND2 with ArcMap and the
extension class is not registered with ESRIRegAsm utility.
This is the code that loads the network dataset:
public void LoadGetNetworkDataset(IFeatureDataset featureDataset, string networkDatasetName)
{
try
{
if(featureDataset != null)
{
IFeatureDatasetExtensionContainer fdxContainer = featureDataset as IFeatureDatasetExtensionContainer;
IFeatureDatasetExtension featureDatasetExtension = fdxContainer.FindExtension(esriDatasetType.esriDTNetworkDataset);
IDatasetContainer3 datasetContainer3 = featureDatasetExtension as IDatasetContainer3;
NetworkDataset = datasetContainer3.get_DatasetByName(esriDatasetType.esriDTNetworkDataset, networkDatasetName) as INetworkDataset;
}
}
catch(System.Exception e)
{
LogError(log, "Error al obtener el network dataset " + networkDatasetName, e);
}
}
Regards