How do I locate sessionID from the Pro SDK?

1474
2
Jump to solution
06-10-2019 01:52 PM
by Anonymous User
Not applicable

I am trying to use "Apply edits" feature service from my ArcGIS Pro Add-in.  See link.  Since I am working in a long transaction inside a branched version, I need the "sessionID" parameter when  POSTing to ArcGIS Server.  How do I retrieve this from the ArcGIS Pro SDK? See my feeble attempt below

I know that normally the client provides the GUID for the sessionID to ensure isolation, however it seems that ArcGIS Pro generates its own sessionID at startup (see screenshot below code snippet), and I would like to use that value for my service calls within the Pro client.

public static async void ApplyUpdatesToFeatureServer(IDictionary<Layer, List<Feature>> layerAttributeMap, bool useGlobalIds)
        {
            string format = "json";
            await QueuedTask.Run(async () => {
                //need this for current token, grab the token before every service call incase the token has expired/re-issued
                var active_portal = ArcGISPortalManager.Current.GetActivePortal();

                var keyset = layerAttributeMap.Keys;
                foreach (var key in keyset)
                {
                    if (key is FeatureLayer fLayer)
                    {
                       
                        string fServiceHost = fLayer.GetTable().GetDatastore().GetPath().Host;
                        var path = fLayer.GetTable().GetDatastore().GetPath();
                        string version = GetVersionFromConnectionString(fLayer.GetTable().GetDatastore().GetConnectionString());
                        var token = active_portal.GetToken();
                        string edits = buildEditsFromAttributes(layerAttributeMap);

                        string baseUri = path.Scheme + "://" + path.Host + ":" + path.Port;
                        var client = new EsriHttpClient();
                        client.BaseAddress = new Uri(baseUri);
                        var content = new FormUrlEncodedContent(new[]
                        {
                            //new KeyValuePair<string,string>("token", token),
                            //new KeyValuePair<string,string>("sessionId", ""),
                            new KeyValuePair<string,string>("f", format),
                            new KeyValuePair<string,string>("gdbVersion",version),
                            new KeyValuePair<string,string>("honorSequenceOfEdits","false"),
                            new KeyValuePair<string,string>("rollbackOnFailure","true"),
                            new KeyValuePair<string,string>("useGlobalIds",useGlobalIds.ToString()),
                            new KeyValuePair<string,string>("edits",edits)
                            //new KeyValuePair<string,string>("sessionId",key.)
                        });
                        var result = await client.PostAsync(path.LocalPath + "/applyEdits?token="+token, content);
                        string resultContent = await result.Content.ReadAsStringAsync();
                        
                        MessageBox.Show(resultContent);
                    }
                }
            });
        }

0 Kudos
1 Solution

Accepted Solutions
by Anonymous User
Not applicable
0 Kudos
2 Replies
by Anonymous User
Not applicable

Has anyone had a chance to look into this?  There are multiple feature service calls I am wanting to make from the Pro Client, while the user has active edits in their project.

Thanks

0 Kudos
by Anonymous User
Not applicable
0 Kudos