Dans mon application C #, j'essaie d'accéder à un service Feature qui est hébergé sur arcgis.com. Le service d'entités est partagé uniquement avec un groupe ou une organisation et n'est PAS public. Comment puis-je accéder à ce service dans mon code client. Voici mon code client qui génère une exception indiquant le jeton d'authentification requis. J'ai le jeton mais je ne sais pas comment utiliser ce jeton pour être authentifié pour utiliser le service. Ce même code fonctionne correctement pour les services partagés en tant que PUBLIC.
IPropertySet sipPS = new PropertySet();
sipPS.SetProperty("DATABASE", layerUrl);
IWorkspaceFactory sipWSF = (IWorkspaceFactory)new ESRI.ArcGIS.Carto.FeatureServiceWorkspaceFactory();
IWorkspace sipWS = sipWSF.Open(sipPS, 0);
IFeatureWorkspace sipFWS = (IFeatureWorkspace)sipWS;
IGroupLayer grpLayer = new GroupLayerClass();
grpLayer.Name = Constants.ArcGISOnlineGroupLayerName;
IFeatureClass sipFC = sipFWS.OpenFeatureClass("0");
IFeatureLayer fl = new FeatureLayerClass();
fl.Name = featureLayerName;
fl.FeatureClass = sipFC;
grpLayer.Add(fl as ILayer);
Réponses:
Votre layerUrl est similaire à: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
Il suffit d' ajouter le jeton à l' URL: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer?token=gGIYjUwXvaO75l1X7LHsgOo2Yueoh1jTGRvrKm7K9ZBE-0TY-EA_Ml7vJtllQK9P2nngX5ciedKgHkjLOEgRSKYR8QhDJMDpWQ09PhTWubNACuFsNIQ3fdlbS6tsPO0h
la source
http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
être envoyé uniquement sur le réseau même après avoir ajouté le jeton avec la coucheUrl."http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer
et j'ai également généré le jeton. supposons que le jeton estabc112asdfkljznxc123123lkjkj23klj
si complet que l'url est comme"http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"
Et j'ai aussi essayé avec des sous-couches individuelles commeurl:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"
mais pas de chanceToken Authentication required
exception lorsque je l'utilise dans du code publié dans la question d'origine :)Veuillez vous référer au lien ci-dessous, il semble que vous ayez un problème de proxy. Pour accéder à des services sécurisés, vous devez avoir un nom d'utilisateur et un mot de passe et simplement écrire un code où le jeton est généré au moment de l'exécution et il vous suffit de l'ajouter correctement
http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//0048000000sv000000
la source
generateToken
requête. Tout simplement pas en mesure de récupérer les services sécurisés que j'ai publiés.Cet exemple de message du forum GeoNet est basé sur javascript, mais il accomplit essentiellement ce que vous voulez.
Cependant, pour le cas de l'API 'ArcObjects for .Net' d'ESRI (que nous pouvons vous dire que vous utilisez en fonction des espaces de noms), vous devez implémenter la méthode IArcGISSingleSignon.GetToken. La méthode de cet objet connecte un utilisateur à ArcGIS Online (AGOL) et renvoie un jeton. La fabrique d'espace de travail et les définitions d'objet featureclass ne nécessitent pas le jeton, mais la connexion doit se produire avant d'accéder aux services de fonctionnalités AGOL sécurisés.
Enfin, tout comme un point API, IWorkspaceFactory est obsolète et IWorkspaceFactory2 est maintenant l'objet d'interface préféré - les signatures n'ont pas changé mais les implémentations backend l'ont fait.
Veuillez poster pour confirmer que votre complément C # se connecte correctement à AGOL une fois que vous implémentez des jetons de connexion unique à l'aide de la méthode GetToken.
la source