In meiner C # -Anwendung versuche ich, auf einen Feature-Service zuzugreifen, der auf arcgis.com gehostet wird. Der Feature-Service wird nur für eine Gruppe oder Organisation freigegeben und ist NICHT öffentlich. Wie kann ich in meinem Client-Code auf diesen Service zugreifen? Hier ist mein Client-Code, der eine Ausnahme auslöst, die das erforderliche Authentifizierungstoken angibt. Ich habe das Token, weiß aber nicht, wie ich dieses Token verwenden soll, um mich für die Nutzung des Dienstes zu authentifizieren. Dieser Code funktioniert auch für Dienste, die als PUBLIC freigegeben sind.
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);
Antworten:
Ihre LayerUrl ist ähnlich unter: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
Fügen Sie einfach das Token zu URL: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer?token=gGIYjUwXvaO75l1X7LHsgOo2Yueoh1jTGRvrKm7K9ZBE-0TY-EA_Ml7vJtllQK9P2nngX5ciedKgHkjLOEgRSKYR8QhDJMDpWQ09PhTWubNACuFsNIQ3fdlbS6tsPO0h
quelle
http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
über das Netzwerk gesendet werden, selbst nachdem das Token an die LayerUrl angehängt wurde."http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer
und ich habe auch das Token generiert. Nehmen wir an, Token istabc112asdfkljznxc123123lkjkj23klj
so vollständig. URL ist wie"http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"
Und ich habe es auch mit einzelnen Unterschichten versucht,url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"
aber kein GlückToken Authentication required
AusnahmeBitte verweisen Sie auf den folgenden Link, anscheinend haben Sie ein Proxy-Problem. Für den Zugriff auf gesicherte Dienste benötigen Sie einen Benutzernamen und ein Kennwort. Schreiben Sie einfach einen Code, in dem das Token zur Laufzeit generiert wird, und fügen Sie es nur ordnungsgemäß an
http://resources.arcgis.com/de/help/arcobjects-net/componenthelp/index.html#//0048000000sv000000
quelle
generateToken
Abfrage generiert . Ich kann die von mir veröffentlichten sicheren Dienste einfach nicht abrufen.Dieser Beispielbeitrag aus dem GeoNet-Forum basiert auf Javascript, erreicht jedoch im Wesentlichen das, was Sie möchten.
Für den Fall der ESRI-API 'ArcObjects for .Net' (die Sie anhand der Namespaces verwenden können) sollten Sie jedoch die IArcGISSingleSignon.GetToken-Methode implementieren. Die Methode dieses Objekts meldet einen Benutzer bei ArcGIS Online (AGOL) an und gibt ein Token zurück. Für die Workspace Factory und die Objektdefinitionen der Feature-Class ist das Token nicht erforderlich. Die Anmeldung muss jedoch erfolgen, bevor auf gesicherte AGOL-Feature-Services zugegriffen werden kann.
Schließlich ist IWorkspaceFactory nur als API-Punkt veraltet und IWorkspaceFactory2 ist jetzt das bevorzugte Schnittstellenobjekt. - Die Signaturen haben sich nicht geändert, die Backend-Implementierungen jedoch.
Bitte posten Sie, um zu bestätigen, dass Ihr C # -Add-In eine korrekte Verbindung zu AGOL herstellt, sobald Sie Single-Signon-Token mithilfe der GetToken-Methode implementiert haben.
quelle