ThinkGeo.com    |     Documentation    |     Premium Support

IE7 Operation Aborted Error with Virtual Earth Full Page Postback

Hi,


The title says it all really, but I'm getting an "Operation aborted" error in Internet Explorer 7 when doing a full postback on a page that contains a map with a VirtualEarth overlay. The problem only happens on a full page postback and doesn't occur at the initial load or as the result of a partial postback. It also doesn't occur in Firefox.


The following links hint at what might be causing the problem:


soulsolutions.com.au/Blog/tabid...-page.aspx


support.microsoft.com/kb/927917


Is there a workaround for this in ThinkGeo?


Best regards,


Gary



Hi Gary, 
  
 I want to clarify some information with you so that we can recreate this issue in our end quickly: 
  
 1. Which version of Map Suite WebEdition are you using? 3.1.299 or some package else? 
 2. What operation system are you using? And 32bit or 64bit one? 
 3. Does this error happen when building the solution in VS or just happen when you deploy your application to IIS? If in IIS, which version of IIS are you using? 
  
 Any more information about this is appreciated. 
  
 Thanks, 
  
 Sun 


Hi Sun,


1. Yes, it's 3.1.299

2. It's Windows Vista SP2 with IE 7.0.6002.18005 (all updates applied).

3. It's happening in VS and IIS.


If you want to recreate it simply create a new web site and add a map control to the default web form. Also add a button.


In the code behind add a new VirtualEarthOverlay - I have the following code to do this:



    protected void Page_Load(object sender, EventArgs e)
    {
       if (!Page.IsPostBack)
       {
          Map1.MapUnit = ThinkGeo.MapSuite.Core.GeographyUnit.Meter;
          VirtualEarthOverlay virtualEarthOverlay = new VirtualEarthOverlay("VirtualEarth");
          virtualEarthOverlay.Name = "Bing Maps";
          virtualEarthOverlay.JavaScriptLibraryUri = new Uri("dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2");
          virtualEarthOverlay.VirtualEarthMapType = VirtualEarthMapType.Road;
          Map1.CustomOverlays.Add(virtualEarthOverlay);
       }
    }

Then if you run it and press the button on the web page you should see the error.


Best regards,


Gary


 



Gray, 
  
 We re-create the issue with IE7, but have some problems to fix it now. We will focus on that tomorrow, and let you know the result as soon as possible. The temporary workaround is that you can put the post-back button into the UpdatePanel. 
  
 Thanks! 
  
 Zhang, 


Hi Zhang, 
  
 Thanks for the suggested workaround. Unfortunately it’s not really suitable for me as I have all sorts of controls that can cause postbacks, with some in different content areas on each page. 
  
 Best regards, 
  
 Gary

Gary, 
  
 I’m sorry that we tried to fixed it, but failed, maybe you can try using the client script for rendering only like the official samples microsoft.com/maps/isdk/ajax/, which I proved there is no error when do I post back.  
  
 Or could you give us some details about your application that maybe we can get some workaround out. 
  
 Thanks! 
  
 Johhny 


Hi Johnny,


I'd previously been using the Microsoft AJAX API, but one of the reasons I've bought Map Suite is so that I don't have to do that. You don't buy a car and then continue to walk everywhere ;-)


When I take the Virtual Earth example from the OpenLayers site and run that within an ASP.NET page I don't get the problem on a full page postback, which indicates the problem lies in the ThinkGeo wrapper around OpenLayers.


The first link I providedin my original post suggests the root cause is the DOM being manipulated before the page has completed loading. The workaround for this is to initialise the map via the onLoad() event.


Looking at the differences in the client scripts generated on first load and subsequent postbacks there is a key difference which could pose a potential problem. In the initial load the following script is generated to initialise the map:


Sys.Application.add_load(CreateAllMaps);


However on subsequent postbacks this is replaced with:


Sys.Application.remove_load(CreateAllMaps);
parserMap1.createMap();


I think all the CreateAllMaps() function does is iterate through a set of parserMap objects and call the createMap() method on each, but the differerence is that on the initial page rendering this is done via the Sys.Application.add_load() method which fires when the page has loaded.


On subsequent postbacks the call to parserMap1.createMap() happens immediately, without waiting for the page to load.


Is there a good reason for this?


Best regards,


Gary



Gary, 
  
 I’m very sorry that i didn’t give you a good solution about it. I think the description above gives me a new way about how to solve it, i will do some tests about “parserMap1.CreateMap()” and using Openlayers in a post back tommorow morning my local time, then give your the details. 
  
 Thanks for giving so helpful ideas. 
  
 Johnny

Gray, 
  
 We have fixed this issue, please ask a temporary DLL package of WebEdition for support@thinkgeo.com . 
  
 Thanks, 
  
 Johnny, 


Hi Johnny, 
  
 That’s great to hear - many thanks. I’ve sent an e-mail off as requested and will update the post with my findings tomorrow. 
  
 Best regards, 
  
 Gary 


Gary, 
  
 You are always so welcome. Please feel free to ask more questions. 
  
 Thanks, 
  
 Johnny

Hi Johnny, 
  
 Just to confirm that the problem is resolved with this updated DLL. Many thanks for getting the fix out so quickly - it’s much appreciated. 
  
 Best regards, 
  
 Gary 


Gary, 
  
 Any more question please let me know. 
  
 Thanks, 
  
 Johnny