ThinkGeo.com    |     Documentation    |     Premium Support

Not all image tiles sent from server

I have a app with server side rendering.  When the client is panning / zooming, occasionally parts of the image will not display (like a image tile is not transferred).


In Fiddler I have noticed that the following URL is requested whenever this happens :


GeoTile.axd?session=1


I usually only see one instance of the above link when the image does not render properly.  All other URL's look similar to the following :


GeoTile.axd?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application/vnd.ogc.se_inimage&FORMAT=image/jpeg&SRS=EPSG:4326&PAGENAME=SilverlightPage&EXTRA=&OVERLAYID=ServerSideShapeFiles&CONNECTOR=SilverlightLaunchPage&FORCEREDRAW=4939413f-8b01-4293-ad66-e41005917170&BBOX=1689648.70498614,5679752.47340396,1692506.16957644,5682609.93799426&WIDTH=256&HEIGHT=256&UNIT=Meter&SCALE=42187.0000000004


Any ideas?


Thankyou



Damian 
  
 The first URL you have mentioned is not used for sending request for tiles images. It’s used to refresh the session every 15minutes and you know if we don’t do that and then the session on the server-side will expire. So it doesn’t matter with the images not displayed. 
  
 Whether the tile image not displayed has some other exception message? if so can you provide us that? 
 If you could recreate your problem at ease, and please send us the sample code so that we could address it quickly. 
  
 Thanks, 
  
 Khalil  
  


Hi, 
  
 This problem is not easy to re-create.  I am interested in what you said : 
 . It’s used to refresh the session every 15minutes   
  
 Is there a way to control how often the session refreshes.  Our software has very complicated time-outs and I would like to set this ‘Refresh the session’ to 1 minute. 
  
 Thankyou

Damian,


You can send the reqeust for server to refresh the session on the client-side manually. You can refer the code below, I set the refresh time as 1 seconds by default and you could change it to what you want.




        var refreshSession = function() {
            var request = new Sys.Net.WebRequest();
            request.set_url('GeoTile.axd?session=1');
            request.invoke();
        };
        window.setInterval(Function.createDelegate(document, refreshSession), 1000);


Please attach these Javascript codes before the form closing tag.


Thanks,


Khalil



(This may have duplicated, my original reply got lost…) 
  
 I am still having problems with some images not sent from the server. 
  
 From what I understand, server side rendering breaks the image down into smaller tiles, in my case around 20.  Not all of those tiles are received by the client (leaving a partially distorted/incorrect image on screen).  This leads me to ASSUME I have exceeded a ‘concurrent open connection’ limit on the server somewhere, do you think this is possible? 
  
 Q1 : Is there a way to view any open / unfinished connections (tiles) sent from the server to the client? 
 Q2 : Is there a way to control the number of tiles sent (Example, change from many to 1)?

Hi, Damian


Sorry to reply your post so late.
I guess that you have some misunderstanding about the server rendering. By default, the ServerLayerOverlay of client-side will send multiple tile images requests to server-side which won’t break the images down into smaller tiles and just be in charge of rendering and then return the tile image that user has requested. The image size returned depend on the request comes from client-side. For you partially distorted/incorrect image problem, in fact, there are many reasons caused it, maybe it related with the time out of connection or the reason you had mentioned in the last post.
For your first question, and right now we can’t view any connection for tiles on the client-side, that’s because the request is in asynchronous mode and we don’t know when the image source is downloaded.
As for you second question, you can easily restrict the number of tiles sent to one by setting the TileType of ServerLayerOverlay as SingleTile .
If you still have any other questions about it, please provide us more information, such as the codes and the data you are consuming, and your help will be appreciated.
Thanks,
Khalil

Khalil, 
  
 The server looked like it was limiting the number of connections open to lcients, so I set ServerLayerOverlay.TileType = TileType.SingleTile; 
  
 Thats done the job, image rendering looks fine now. 
  
 Thankyou

Hi, Damian 
  
 You are welcome. 
 Sounds great that you have solved the problem.  
  
 Thanks, 
  
 Khalil

I could not find TileType property for ServerLayerOverlay. Can you please guide me?

Hi Muneswar Rao, 
  
 You can open our HowDoISample then add this code: 
  
 ServerLayerOverlay serverLayerOverlay = new ServerLayerOverlay("NativeServerHeatLayer", "SilverlightMapConnector1"); 
 serverLayerOverlay.TileType = TileType.SingleTile; 
  
 I just tested that, the TileType property works well. My version is 5.5. 
  
 Are you missing some dlls there? I think you can compare the dlls reference with our sample. 
  
 Regards, 
  
 Don