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.
<SPAN class="keyword token">public</SPAN> <SPAN class="keyword token">static</SPAN> <SPAN class="keyword token">async</SPAN> <SPAN class="keyword token">void</SPAN> <SPAN class="token function">ApplyUpdatesToFeatureServer</SPAN><SPAN class="punctuation token">(</SPAN>IDictionary<SPAN class="operator token"><</SPAN>Layer<SPAN class="punctuation token">,</SPAN> List<SPAN class="operator token"><</SPAN>Feature<SPAN class="operator token">></SPAN><SPAN class="operator token">></SPAN> layerAttributeMap<SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">bool</SPAN> useGlobalIds<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">string</SPAN> format <SPAN class="operator token">=</SPAN> <SPAN class="string token">"json"</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">await</SPAN> QueuedTask<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Run</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">async</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">=</SPAN><SPAN class="operator token">></SPAN> <SPAN class="punctuation token">{</SPAN>
<SPAN class="comment token">//need this for current token, grab the token before every service call incase the token has expired/re-issued</SPAN>
<SPAN class="keyword token">var</SPAN> active_portal <SPAN class="operator token">=</SPAN> ArcGISPortalManager<SPAN class="punctuation token">.</SPAN>Current<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetActivePortal</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> keyset <SPAN class="operator token">=</SPAN> layerAttributeMap<SPAN class="punctuation token">.</SPAN>Keys<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">foreach</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">var</SPAN> key <SPAN class="keyword token">in</SPAN> keyset<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="punctuation token">(</SPAN>key <SPAN class="keyword token">is</SPAN> FeatureLayer fLayer<SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">string</SPAN> fServiceHost <SPAN class="operator token">=</SPAN> fLayer<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetTable</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetDatastore</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetPath</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>Host<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> path <SPAN class="operator token">=</SPAN> fLayer<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetTable</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetDatastore</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetPath</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">string</SPAN> version <SPAN class="operator token">=</SPAN> <SPAN class="token function">GetVersionFromConnectionString</SPAN><SPAN class="punctuation token">(</SPAN>fLayer<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetTable</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetDatastore</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetConnectionString</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> token <SPAN class="operator token">=</SPAN> active_portal<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetToken</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">string</SPAN> edits <SPAN class="operator token">=</SPAN> <SPAN class="token function">buildEditsFromAttributes</SPAN><SPAN class="punctuation token">(</SPAN>layerAttributeMap<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">string</SPAN> baseUri <SPAN class="operator token">=</SPAN> path<SPAN class="punctuation token">.</SPAN>Scheme <SPAN class="operator token">+</SPAN> <SPAN class="string token">"://"</SPAN> <SPAN class="operator token">+</SPAN> path<SPAN class="punctuation token">.</SPAN>Host <SPAN class="operator token">+</SPAN> <SPAN class="string token">":"</SPAN> <SPAN class="operator token">+</SPAN> path<SPAN class="punctuation token">.</SPAN>Port<SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> client <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">EsriHttpClient</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
client<SPAN class="punctuation token">.</SPAN>BaseAddress <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Uri</SPAN><SPAN class="punctuation token">(</SPAN>baseUri<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> content <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">FormUrlEncodedContent</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">new</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="comment token">//new KeyValuePair<string,string>("token", token),</SPAN>
<SPAN class="comment token">//new KeyValuePair<string,string>("sessionId", ""),</SPAN>
<SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KeyValuePair</SPAN><SPAN class="operator token"><</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"f"</SPAN><SPAN class="punctuation token">,</SPAN> format<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KeyValuePair</SPAN><SPAN class="operator token"><</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"gdbVersion"</SPAN><SPAN class="punctuation token">,</SPAN>version<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KeyValuePair</SPAN><SPAN class="operator token"><</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"honorSequenceOfEdits"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"false"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KeyValuePair</SPAN><SPAN class="operator token"><</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"rollbackOnFailure"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"true"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KeyValuePair</SPAN><SPAN class="operator token"><</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"useGlobalIds"</SPAN><SPAN class="punctuation token">,</SPAN>useGlobalIds<SPAN class="punctuation token">.</SPAN><SPAN class="token function">ToString</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">KeyValuePair</SPAN><SPAN class="operator token"><</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="keyword token">string</SPAN><SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"edits"</SPAN><SPAN class="punctuation token">,</SPAN>edits<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">//new KeyValuePair<string,string>("sessionId",key.)</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> result <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">await</SPAN> client<SPAN class="punctuation token">.</SPAN><SPAN class="token function">PostAsync</SPAN><SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">.</SPAN>LocalPath <SPAN class="operator token">+</SPAN> <SPAN class="string token">"/applyEdits?token="</SPAN><SPAN class="operator token">+</SPAN>token<SPAN class="punctuation token">,</SPAN> content<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">string</SPAN> resultContent <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">await</SPAN> result<SPAN class="punctuation token">.</SPAN>Content<SPAN class="punctuation token">.</SPAN><SPAN class="token function">ReadAsStringAsync</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
MessageBox<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Show</SPAN><SPAN class="punctuation token">(</SPAN>resultContent<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>