POST
|
Hi, We have an old application that uses SOAP to retrieve the services catalog from ArcGIS Server instances. I appreciate that the SOAP interface is deprecated but it still says in the documentation that there's no intention of removing it and we have no issues working against private instances of the latest ArcGIS Sever (currently version 11.2) We've recently published services on our ArcGIS Online Organisation with the intention of consuming them in our product. This results in services that have a code in the url which presumably uniquely identifies our organisation's space on a default hosting server. The rest endpoint for the services directory is as follows: https://services1.arcgis.com/<presumablyUniqueOrganisationCodeHere>/ArcGIS/rest/services Unfortunately we've discovered that the SOAP interfaces don't seem to be supported on the default hosting server. It seems that any attempt to access the SOAP endpoint results in a redirect to the REST services page. Even a request for the wsdl page shown below redirects to the rest services directory: https://services1.arcgis.com/<presumablyUniqueOrganisationCodeHere>/ArcGIS/services?wsdl Is this the expected behaviour and if so, is there any way we can turn on support for the SOAP API within our organisation? Regards, Kevin
... View more
02-20-2024
05:36 AM
|
0
|
0
|
310
|
POST
|
I'm surprised this issue still exists 8 years down the line but I just ran into it after installing ArcGIS Server 11.1 on a Windows Server 2022 VM that's not joined to a domain. I've installed this software many times over the years (mostly for dev/test purposes on non-server OSs to be fair) and never run into this before. I tried a couple of clean installs, renaming the machine before and after but it was only setting the, "Primary DNS suffix of this computer" to "LOCALDOMAIN" that eventually fixed it for me, so thanks go out to HunerWei!
... View more
08-15-2023
03:11 AM
|
0
|
0
|
342
|
POST
|
Hi Matvei, Thanks for your reply and I appreciate the detailed response which will have clearly taken some time and effort to put together. It's good to hear that you've managed to plug a few of the leaks and it sounds like the next release (presumably 100.11) is going to be a big improvement, even with our current implementation. Our product is several years old now and not in active development but we do update the runtime occasionally to facilitate bug fixes. I think this is the most we are likely to be able to do but I will bear in mind your first approach with the UniqueValueRenderer and separate graphics for labels as I think that will be the most appropriate solution for our use case. Regards, Kevin
... View more
03-10-2021
01:43 AM
|
0
|
0
|
5721
|
POST
|
Hi Guys, We have an application built with the ArcGIS Runtime SDK for .net that's been around for several years now with relatively few changes. We have fixed some bugs in that time and this has required us to periodically upgrade to the latest version of the SDK. Our most recent release is in fact built against version 100.9 of your SDK. Chart items from our application can be added to the map and one of the things we implemented a long time ago is visual clustering on the map surface. This occurs both when the user zooms in or out and when they toggle our clustering feature on and off. Each graphic on the map represents one of our own chart items and the graphics therefore potentially have unique images, unique text labels and a triangular symbol that points to the relevant geographic location. The way this was implemented was with graphics that each have a unique composite symbol and are dynamically added to, and removed from, a single graphics overlay. The clustering algorithm dynamically calculates the clusters and assigns these graphics to the appropriate cluster, each cluster being represented by a new graphic with its own composite symbol. These cluster symbols are essentially just a circle with a text label showing the count of graphics in the cluster but they also show selection state including a special state when only some of the cluster contents are selected on our chart. To summarize, at any point in time the graphics overlay will contain composite symbols representing individual chart items, clusters or both. The graphics and symbols for the clusters are dynamically created but the graphics and symbols for the individual chart items are created once and cached by us. Each clustering operation re-groups these cached graphics removing the overhead of their creation. What we have noticed recently (initially via our application crashing) is that there appears to be a memory leak in your unmanaged code. The problem occurs in many scenarios but the easiest way for us to reproduce it is to add say 50,000 chart items to the map and repeatedly zoom in and out or, even just repeatedly toggle clustering on and off. Both of these operations remove and re-add existing graphics to the overlay which eventually causes the applicaition to crash with an out of memory exception. There is obviously always going to be a finite number of graphics you can add before running out of memory and our application is currently 32 bit so we are constrained by the 4GB limit. We are nowhere near this limit however when the graphics are initially all created and added to the overlay. I have created and attached a simple application that demonstrates this problem. The demo application initially creates and caches 50,000 graphics with a similar symbol to those in use by our main application. It then goes on to repeatedly add and remove these graphics (on the UI thread) to the graphics overlay in the handler for a System.Windows.Forms.Timer. I have profiled both our application and this little demo app and in both cases the memory footprint continues to grow until it eventually crashes. This occurs much quicker in our application as there is obviously less memory available in that context. Analysis of the profiling results show that the .net memory seems to be pretty well behaved but the unmanaged memory just continually grows with each add/remove cycle. The demo app is pretty simple but I've tried to make it comparable to our real application and for that reason the map control is inside an ElementHost. I don't think that really makes any difference however as at some point I did try it in a pure WPF application with the same results. It might seem a little odd in places and there are definitely better ways to write this demo app in isolation, but I've just lifted code and adapted it as little as possible to demonstrate the issue. Again, the intention was to keep it as close to the real code as possible. To build it you will just need to add the Esri.ArcGISRuntime.WPF v100.9.0 package in the NuGet package manager. The graphics are all created on the first timer tick so after the map initially displays there will be sizeable delay whilst that happens. The graphics are subsequently just added and removed on alternate ticks so you can take a memory snapshot when they first appear and then another a few iterations later, or just watch the memory climb in the visual Studio Diagnostic Tools Window. I've actually profiled it in a few different tools to come to my conclusions. I would appreciate someone taking a look and either confirming my findings or letting me know if there's some other issue I've overlooked. Regards, Kevin
... View more
01-11-2021
09:19 AM
|
0
|
2
|
5868
|
POST
|
Hi Preeti, Glad to hear you managed to reproduce this and thanks for the update. Hopefully this will be fixed in the next release and we can revert to using the Dynamic rendering mode. Regards, Kevin
... View more
06-18-2020
07:57 AM
|
0
|
0
|
1685
|
POST
|
Hi Nicholas, Thanks for your reply. I did consider creating a new instance of the GraphicsOverlay after each zoom operation as that would presumably have a clean graphics collection with no dodgy artifacts from the previous overlay. I don't think this would give us the same smooth effect however and will possibly introduce flicker of its own. We already don't remove graphics that are still relevant after clustering has been applied to avoid flicker, and this approach would negate that. Unfortunately the GraphicsOverlay is also woven into our architecture to give context for our multi-chart environment and as such it's not a local object that's easy to switch out for a new instance. A quick test is therefore not possible, but I think it's likely to introduce similar flicker to clearing the whole overlay and adding all the graphics back in, which we currently avoid. We are on the cusp of a release right now where the mapping component is just one part of a much bigger product and we were actually waiting on your 100.8 release to fix a PKI problem that we've been collaborating on. Clearly we were hoping to just reference the new assembly and move ahead but unfortunately this issue has arisen in testing. I think we will probably have to ship with the rendering mode set to Static and wait for a future fix/update to resolve this new problem. Just to address your other question, I can confirm that selection doesn't have anything to do with the repro. It just happens to be the case that the screenshots I provided had a selected cluster that was removed but the same problem occurs even when nothing is selected. We also use the Graphics overlay, rather than a feature layer as each symbol is potentially unique in terms of it's graphic and text so this seemed like the appropriate solution. i.e It's not static symbology which I believe a Feature Layer is more aligned with. That may be an incorrect assumption so please feel to correct me if you still think a Feature Layer would be a better option we should consider for the future... Regards, Kevin
... View more
05-27-2020
04:19 AM
|
0
|
0
|
1685
|
POST
|
Hi Preeti, Thanks for looking into this for us. Your application only uses a SimpleMarkerSymbol and a TextSymbol in the composite symbol but as I said above, the bug only seems to occur with the combination of a PictureSymbol and a TextSymbol, so you will need to add a PictureSymbol too. Regards, Kevin
... View more
05-27-2020
03:35 AM
|
0
|
3
|
1685
|
POST
|
Hi Guys, We seem to have found an issue with the ArcGISRuntime SDK for .net 100.8 release that's a regression over 100.7 Our application uses CompositeSymbols to represent our chart items, each containing 3 symbols: 1 PictureMarkerSymbol, 1 TextSymbol and 1 SimpleMarkerSymbol. These composite symbols are displayed on a GraphicsOverlay with the rendering mode set to Dynamic. We have implemented our own clustering algorithm that potentially removes existing graphics from the GraphicsOverlay and replaces them with new graphics when zooming in and out. The new graphics are displayed using various composite symbols to represent clusters in differing states of selection i.e Unselected, partially selected and fully selected. The issue we are seeing is that when zooming in and out, the graphics overlay still displays random constituent parts of composite symbols for graphics that have been deleted. For efficiency reasons, we actually only remove the graphics that are not being consumed by a new cluster, however testing has shown that even if we delete ALL graphics from the overlay (either iteratively or using the Clear method) before adding back the graphics relevant to the new zoom level, we're still left with these random remnants. This only seems to be a problem when the GraphicsOverlay's RenderingMode is set to Dynamic and it also seems to be triggered by the combination of a PictureSymbol AND a TextSymbol. Just one graphic with this combination of symbols causes all other composite symbols (even cluster symbols that only contain SimpleMarkerSymbols and a TextSymbol) to randomly behave in the manner described. It's worth noting that once a remnant is present, it never disappears (at any zoom level) and is not reported as being present in the GraphicOverlay's graphics collection. For now we're working around this issue by using the Static rendering mode on the Graphics overlay, but that's obviously less visually appealing to our end users. Could you therefore please look into this to confirm the issue and let us know when it is likely to be fixed? Attached are a couple of images demonstrating the problem. The first map represents 6 of our chart items, (2 individual items and 4 inside a partially selected cluster) The second is the same map zoomed in one level where the cluster of 4 items has split into 2 clusters of 2 items. Note the central blue and white circle with orange selection glow. This is a remnant of the composite symbol for the 4 item cluster shown at the previous zoom level, minus the TextSymbol showing the count which has clearly been deleted as expected. The graphic for this symbol has been deleted from the overlay and the overlays's graphic count is 4 despite there clearly being 5 composite symbols present. Regards, Kevin.
... View more
05-26-2020
10:06 AM
|
0
|
7
|
1781
|
POST
|
Thanks for the reply but the demo app I posted is already targeting 4.7.2
... View more
10-22-2018
09:19 AM
|
0
|
0
|
5575
|
POST
|
Hi Guys, Does anyone have an answer to these issues please, especially the crashing one? Issue 1: We have an application that uses PKI authentication with ArcGISPortal but we seem to experience an intermittent crash due to a null certificate getting into the X509CertificateCollection on the HttpClientHandler. There are 2 places where the application can intermittently crash (X509CertificateCollection.GetHashCode and x509CertificateCollection.Contains) but both cases are due to the same reason. i.e A null certificate entry in the handler's collection. I have attached images that show the call stacks for both crashes and also the certificate collection contents where you can clearly see the null certificate entry. It's worth noting that one of the call stacks contains an ArcGISHttpClientHandler and the other just uses a standard HttpClientHandler, yet both result from calling await PortalItem.Thumbnail.ToImageSourceAsync() I have also attached a simple demonstration application but you will need a Portal instance with PKI setup to test it. You will also need to update the hard coded portal uri and certificate thumbprint as detailed in the source file comments. The application automatically connects to a portal instance on startup using the certificate with the hard coded thumbprint. The displayed "Portal User" is updated once connected and it then goes on to fetch a list of all the available base maps. A thumbnail image is then fetched for each basemap and these images are each displayed on separate buttons. The button handlers are not wired up in this application. The "Create Portal" button and the checkbox beside it can be ignored for now. Steps to reproduce: Just keep restarting the application and eventually you should get one of the two exceptions mentioned above. If you get to the point where the images start appearing then you may as well quit and restart as the problem will not occur after that. Issue 2: We also have a use case for clearing the SSL state and reconnecting with a different client certificate. The Esri documentation states that removing the certificate credential from the AuthenticationManager's credential collection should result in you getting challenged again on the next request. This does indeed seem to be the case but if you choose a different certificate the connection then fails with the following error, "Your login session has been reset. Please try again." Trying again with the new certificate succeeds on the second attempt but having to do this twice is not a great UX. Steps to reproduce: Assuming you have more than one valid client certificate installed and they're both mapped to portal users, after the initial load succeeds, uncheck the "Use default client certificate" check box and press the "Create Portal" button. This will attempt to create a new portal instance, prompting you to select a client certificate, at which point you should select a certificate with a different thumbprint to the hard coded one. The connection will fail and display the exception message in a dialog box. Dismiss the dialog box and try again with the same certificate - Assuming it's a valid certificate that has been correctly mapped, It will succeed on this second attempt. I have tried to tear down the SSL connection in the Reset method but unfortunately this doesn't make any difference. The code also uses reflection which is obviously a bit hacky but unfortunately the .net framework doesn't support this through the ServicePoint API. Although this Reset method is called on every connection, it's definitely not the reason for the first crashing issue as that still happens with the Reset method removed. The problem was originally noticed on 100.3.0 but I've just updated it to work against 100.4.0 which was released last week. I was hoping that might fix it but unfortunately the crash is still present. Any comments and/or workarounds would be appreciated. Regards, Kevin
... View more
10-22-2018
04:26 AM
|
1
|
3
|
6227
|
POST
|
Thanks to Morten and Jonathan for your explanations, at least I know there's nothing wrong with my deployments now. You both seem to be saying that this is by design but it seems a bit odd to me that you would overload the behaviour of such a well known concept, particularly when it's security related. If a web application has anonymous access disabled, or you've checked a setting that implies it should be at least, then it's entirely reasonable to expect to have to log in to do anything at all. That's how the website behaves and I believe it's how most people (including Jennifer it seems) would expect the API to behave. @Morten I appreciate your explanation of the CanSearchPublic and CanSharePublic properties, but like you say, these are closely related but not totally relevant to the main point. Jennifer introduced these into the conversation to try and explain things after realizing she was getting the same unexpected behaviour as me. @Jonathan I agree that you could acheive the same effect by only sharing items with the organization. That's a less convenient workaround however and presumably means there would be no need to disable anonymous access at all. I personally think that when anonymous access is disabled, a more standardized and intuitive approach would be to just not allow a portal instance to be created without supplying credentials.
... View more
03-29-2017
03:22 AM
|
0
|
1
|
1402
|
POST
|
Hi Jennifer, Thanks again for your reply. You seem to be confirming the behaviour I found which to my mind can only be a bug somewhere in the Esri technology stack. Disabling anonymous access should mean that only logged in users gets to see any content and all other requests are denied. The portal Web App deals with it correctly but for some reason the ArcGIS runtime SDK for .net doesn't. The problem may well be in the Portal's REST API or whatever access point the runtime SDK uses that the Web App presumably circumvents. Unfortunately I don't have time to try out other APIs and pinpoint the problem for you. I have to say, this seems like quite a serious security flaw to me so I've linked this to the, "Portal For ArcGIS" community now to see whether somebody there has any insight or can raise a bug.
... View more
03-27-2017
04:57 AM
|
0
|
3
|
1402
|
POST
|
Hi Jennifer, Thanks for the quick response. I'm definitely still seeing the reported behaviour so here is the code I'm using with commented results per line: It's probably worth reiterating that we're using the Portal's built in Identity store and ArcGISToken based authentication. As such, the web Adaptor deployed in IIS has anonymous access enabled as we're not using web tier authentication, but the portal has it disabled. private static readonly Uri PortalUri_104 = new Uri("http://<ServerName>/arcgis/sharing/rest");
public async Task ConnectAsync()
{
try
{
AuthenticationManager.Current.ChallengeHandler = new ChallengeHandler(async (info) =>
{
var credential = await AuthenticationManager.Current.GenerateCredentialAsync(info.ServiceUri, Username_104, Password_104);
return credential;
});
// Portal created with no credentials passed
var portal = await ArcGISPortal.CreateAsync(PortalUri_104);
// The following line outputs Private when anonymous access is disabled and Public when it's enabled
Debug.WriteLine("Current Portal Access: " + portal.PortalInfo.Access);
// For test purposes, I've put a single, public Webmap in the public group being used
// as basemaps and that's returned here despite anonymous access being disabled.
var basemaps = await portal.GetBasemapsAsync();
foreach (var basemap in basemaps)
{
// Name is output ok here
Debug.WriteLine(basemap.Item.Title);
}
// This returns no results as expected
var resultSet = await portal.FindItemsAsync(new PortalQueryParameters("access:private"));
// This is a public item and it's returned ok despite anonymous access being disabled
var publicPortalItem = await PortalItem.CreateAsync(portal, "fb68410db0eb411f82989f611f53d7cd");
// This is a private item and as expected the request invokes the challenge handler
var privatePortalItem = await PortalItem.CreateAsync(portal, "883f296272ff4891b22126b078ca0091");
// The following line outputs null
Debug.WriteLine("Current portal credential: " + (portal.Credential == null ? "null" : mPortal.Credential.ToString()));
// The following line outputs null
Debug.WriteLine("Current portal user: " + (portal.User == null ? "null" : mPortal.User.ToString()));
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
... View more
03-22-2017
05:07 AM
|
0
|
0
|
1402
|
POST
|
Can somebody please explain the relationship (or lack of one) between anonymous access on the portal Web Application and anonymous access to portal items through the SDK? If I disable anonymous access on our private portal instance then via the web browser, I always get redirected to the login page and cannot access anything without logging on first. That is obviously expected behaviour. With the same setting (anonymous access disabled), when using the SDK I seem to be able to retrieve any portal item that is marked as public, without providing any credentials. The PortalInfo.Access property returns the expected values i.e Private when anonymous access is disabled and Public when anonymous access is enabled, but this doesn't seem to have any bearing on whether I can retrieve portal items or not. The Portal is configured to use the internal identity store with ArcGISToken based authentication and there are definitely no credentials added to the AuthenticationManager or supplied when creating the portal instance. My assumption is that this makes me an anonymous SDK user and therefore I shouldn't have access to any content. I'm using ArcGIS Portal 10.4.1 and the new Quartz SDK. I've tested against Portal 10.3.1 too and get the same behaviour there. Am I misunderstanging something or is there a bug in the SDK? If it's a bug, does anyone know if it's fixed in Portal 10.5?
... View more
03-21-2017
11:42 AM
|
0
|
8
|
3260
|
POST
|
When changing basemaps on the map view to a basemap with a different spatial reference, polygon graphics in a graphics overlay are successfully reprojected but not always drawn corretly. i.e Sometimes the border is missing and when this occurs the grapic no longer seems to update when its selection status is changed. The IsSelected property can be set but the expected highlight doesn't display Having spent some time investigating this, it seems to be related to the changing spatial reference in combination with Dynamic rendering mode. If rendering mode is set to static then the problem seems to resolve itself. I have published a map on ArcGIS online that uses the BNG spatial reference (27700) and created a small applicaiton to demonstrate the problem. (see attached) The application starts with a web mercator map and pressing the button toggles to the BNG map. There is a single polygon that automatically reprojects and draws just fine when in static rendering mode, but often fails to draw correctly when the rendering mode is set to dynamic. The rendering mode can easily be changed via the radio buttons. Are we doing something wrong or is this a bug?
... View more
02-07-2017
05:13 AM
|
1
|
2
|
3089
|
Title | Kudos | Posted |
---|---|---|
1 | 10-22-2018 04:26 AM | |
1 | 11-11-2014 06:35 AM | |
1 | 02-07-2017 05:13 AM |
Online Status |
Offline
|
Date Last Visited |
Tuesday
|