Hi,
I am trying to do something (that I think should be) very simple, connect to a Portal from a Runtime application.
However, when I run
TokenCredential credential = await IdentityManager.Current.GenerateCredentialAsync(portalUrl, "username", "password");
An exception is thrown, "The token service URL is not set."
This works fine if I am using a service url
TokenCredential credential = await IdentityManager.Current.GenerateCredentialAsync(serviceUrl, "username", "password");
What I am doing seems to me to be exactly how it is described here Access the ArcGIS platform—ArcGIS Runtime SDK for .NET | ArcGIS for Developers. But maybe I am missing something. I also tried connecting to our AGOL account and get the same exception.
What am I missing?
Thanks
-Joe
Solved! Go to Solution.
After some help from Mike I was able to find the problem.
Another symptom of this issue was that Dashboard application would crash when I tried to connect to our Portal
In the end this was a configuration issue. Because of how our domain is configured we use an internal DNS. In setting up the public URL for the portal was included in the domain DNS. For some reason even though I use the public URL when setting up Web Adapter for Portal some Portal configuration still points to the internal machine name. This was causing a name conflict and is the source of the error I see.
I ended up removing the domain DNS mapping and then going through the setup on our DMZ machine. This got everything to be correctly using only the public name. After that I am able to connect using the API and Dashboard no longer crashes. After that I was able to add the domain mapping back so the other machines only internal to the domain can access using the public URL
Hi,
I use something like, https://portal.mydomain.com/arcgis for our internal portal. This is the same Url I would enter to access to portal in a browser. For trying AGOL I use https://myorganization.maps.arcgis.com/. This is what it seems the help is telling me
Michael Branscomb would you have any ideas what changes I need to make to setup the credentials to Portal correctly? Should I be using a rest api url and not the portal url?
Thanks
-Joe
Hi,
We'll need to see some more code to properly determine what the problem might be, but have you tried using https://<PortalURl>/sharing/rest ?
Cheers
Mike
Basically the following line of code fails with:
System.Net.WebException: Error: NameResolutionFailure at System.Net.HttpWebRequest.EndGetRequestStream
var cred = await IdentityManager.Current.GenerateCredentialAsync( new Uri("https://portal.domain.com/arcgis/sharing/rest"), "username", "password") as ArcGISTokenCredential;
If I use AGOL then it works. So this works
var cred = await IdentityManager.Current.GenerateCredentialAsync( new Uri("http://mycompany.maps.arcgis.com/sharing/rest"), "user", "password") as ArcGISTokenCredential;
I would be happy to give you the url and a login to our portal to test, I really need to get this working using a hosted Portal not AGOL
After some help from Mike I was able to find the problem.
Another symptom of this issue was that Dashboard application would crash when I tried to connect to our Portal
In the end this was a configuration issue. Because of how our domain is configured we use an internal DNS. In setting up the public URL for the portal was included in the domain DNS. For some reason even though I use the public URL when setting up Web Adapter for Portal some Portal configuration still points to the internal machine name. This was causing a name conflict and is the source of the error I see.
I ended up removing the domain DNS mapping and then going through the setup on our DMZ machine. This got everything to be correctly using only the public name. After that I am able to connect using the API and Dashboard no longer crashes. After that I was able to add the domain mapping back so the other machines only internal to the domain can access using the public URL