When a window is opened via mapguide it will always (as far as I have seen) have session and mapname passed to it.
Example (If your using < .NET 3.5 you will need to specify the types instead of var):
MapGuideApi.MgInitializeWebTier("/path/to/www/webconfig.ini");
var siteconnection = new MgSiteConnection();
var user = new MgUserInformation(session);
siteconnection.Open(user);
var map = new MgMap(siteconnection);
Map.Open(mapname);
I think that should work. I wrote up a class that handles the session, initializing the map, opening maps via layout/definition/etc.
I would recommend doing that rather then copying and pasting the above for every report.
You can stick MapGuideApi.MgInitializeWebTier() in Application_Start() in global.asax to avoid needing to call it every time a report is opened.
Also I would use the viewer API to refresh the map/legend. The server side functions don't work for the ajax viewer from what I have seen.