How do I locate sessionID from the Pro SDK?

401
2
Jump to solution
06-10-2019 01:52 PM
KevinMahoney
New Contributor III

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
KevinMahoney
New Contributor III
0 Kudos
2 Replies
KevinMahoney
New Contributor III

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
KevinMahoney
New Contributor III
0 Kudos