[mapguide-users] Application compatibility b/w MGE2009 and MGOS 2.0.2

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Fri Jan 15 04:12:54 EST 2010


You only need an updated MapGuideDotNetApi if you are using the 
LocalNativeConnection.
I will upload the updated signed dll files later today (appx 20:00 GMT)

If you cannot wait, the command to sign MapGuideDotNetApi is:
signer.exe -k maestroapi.key -outdir .\out -a MapGuideDotNetApi.dll

Signer.exe and the key is in SVN:
http://trac.osgeo.org/mapguide/browser/trunk/Tools/Maestro/MaestroAPI/Signer/Signer.exe?format=raw
http://trac.osgeo.org/mapguide/browser/trunk/Tools/Maestro/MaestroAPI/maestroapi.key?format=raw

The bindingRedirect setup is as follows:
<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MapGuideDotNetApi" 
publicKeyToken="f526c48929fda856" />

<!--
                 NOTE: href MUST be absolute, alternative is to just rename
                 the desired version of the file and replace 
MapGuideDotNetApi.dll

                 If you choose the rename option, remove the <codeBase> 
tags below,
                 but keep the <bindingRedirect>
             -->
<codeBase version="1.2.0.4103" href="MapGuideDotNetApi-1.2.dll"/>
<codeBase version="2.0.0.2308" href="MapGuideDotNetApi-2.0.dll"/>
<codeBase version="1.0.0.1" href="MapGuideDotNetApi-2.1.dll"/>

<!-- Activate MGOS 1.2, MGEP 2008 -->
<!-- <bindingRedirect oldVersion="2.0.0.2308" newVersion="1.2.0.4103" /> -->

<!-- Activate MGOS 2.0, MGEP 2009 , *default* -->
<!-- <bindingRedirect oldVersion="2.0.0.2308" newVersion="2.0.0.2308" /> -->

<!-- Activate MGOS 2.1, MGEP 2010 -->
<bindingRedirect oldVersion="2.0.0.2308" newVersion="1.0.0.1" />

</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Regards, Kenneth Skovhede, GEOGRAF A/S

On 15-01-2010 09:41, Dejan Gregor wrote:
> Kenneth,
>
> I am using the verion 2.1.0.3505 for MapGuideDotNetApi. Where should I set
> the version value (newVersion or oldVersion) and is the publicKeyToken still
> 'f526c48929fda856'?
>
> I am using MGE 2010.
>
> Dejan
>
>
>
> Kenneth Skovhede, GEOGRAF A/S wrote:
>    
>> The "Invalid Stream Header" is a sort-of catch-all exception that happens
>> when the MapGuide service tries to de-serialize an object, and finds
>> something it does not expect.
>> The usual cause of this is the other (unmanaged) binaries.
>>
>> The MapGuideDotNet.dll file is a thin wrapper that just calls the
>> unmanaged dll's.
>>
>> So you can bind .Net to either version of the managed dll, but you MUST
>> have the correct
>> unmanaged dll's in the bin folder.
>>
>> Alternatively, you can fix the binding through the Web.config file:
>> <configuration>
>>    <runtime>
>>      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
>>        <dependentAssembly>
>>          <assemblyIdentity name="MapGuideDotNetApi"
>> publicKeyToken="f526c48929fda856" />
>>          <bindingRedirect oldVersion="2.0.0.2308" newVersion="1.2.0.4103"
>> />
>>        </dependentAssembly>
>>      </assemblyBinding>
>>    </runtime>
>> </configuration>
>>
>> Replace the publicKeyToken and version as you please.
>>
>> There was a slight change with MgDisposable/MgGuardedDisposable some
>> time ago.
>> If you run into that, you have to use the re-bind option described above.
>>
>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>
>>
>>
>> MacNair skrev:
>>      
>>> We have a Mapguide application developed using MGE 2009’s library.  This
>>> application does most of its work by calling methods from another DLL
>>> called
>>> “MGEUtils.DLL”. This DLL references “MapGuideDotNet.DLL”.
>>>
>>> The application works fine on the development machine where MGE is
>>> installed. But on the deployment machine where MapGuide Open Source (MGOS
>>> 2.0.2.3011) is installed we are getting a few errors.
>>>
>>> Should we recompile the class library “MGEUtils” referencing MGOS’s
>>> MapGuideDotNet.DLL?
>>>
>>> The calls made to the methods in MGEUtils to initialize the application
>>> are
>>> throwing a few errors as given under. Note: The function definitions for
>>> these methods are given in Appendix below:
>>>
>>> // Initialize the webtier
>>> string sErrMsg = "";
>>> mgeUtils.InitializeWebTier(configPath, sErrMsg);
>>>
>>> // Validate the user login and create a session
>>> mgeUtils.InitialiseSession("Anonymous", "", ref sessionId, ref sErrMsg);
>>>
>>> Note:  The function definitions for the above calls within MGEUtils are
>>> given at the end of this document.
>>>
>>> Errors encounterd are…
>>>
>>> CASE I: Placing MGE’s MapGuideDotNet.dll  along with “MGEUtils.DLL”  in
>>> the
>>> application’s bin directory.
>>> Error @ LINE: mgeUtils.InitialiseSession("Anonymous", "", ref sessionId,
>>> ref
>>> sErrMsg);
>>> Error details: OSGeo.MapGuide.MgInvalidStreamHeaderException: Invalid
>>> stream
>>> header exception
>>>
>>> CASE II: Placing MGOS ’s MapGuideDotNet.dll  along with “MGEUtils.DLL”
>>> in
>>> the application’s bin directory.
>>> Error @ LINE: mgeUtils.InitializeWebTier(configPath, sErrMsg);
>>> Error details: Could not load file or assembly 'MapGuideDotNetApi,
>>> Version=2.0.0.3202, Culture=neutral, PublicKeyToken=6416a18f8953383b' or
>>> one
>>> of its dependencies. The located assembly's manifest definition does not
>>> match the assembly reference. (Exception from HRESULT: 0x80131040)
>>>
>>> Any help on this? Sorry for the lengthy mail. Thanks!
>>>
>>> Function defintions
>>>
>>> public bool InitializeWebTier(string configPath, string csErrMsg)
>>> {
>>>     try
>>>     {
>>>       // Check if the webConfig file exists
>>>       if (!File.Exists(configPath)) { return false; }
>>>
>>>       MapGuideApi.MgInitializeWebTier(configPath);
>>> 	return true;
>>>      }
>>>      catch (MgConnectionFailedException mge)
>>>      {
>>> 	csErrMsg = mge.GetMessage();
>>> 	return false;
>>>      }
>>> }
>>> public bool InitialiseSession(string userName, string userPwd, ref string
>>> sessionId, ref string csErrMsg)
>>> {
>>>    try
>>>    {
>>>     // Validate user login
>>>     MgUserInformation userInfo = new MgUserInformation(userName, userPwd);
>>>     MgSite site = new MgSite();
>>>     site.Open(userInfo);
>>>
>>>     // Create a session
>>>     sessionId = site.CreateSession();
>>>    }
>>>    catch (MgConnectionFailedException mge)
>>>    {
>>>     csErrMsg = mge.GetMessage();
>>>     return false;
>>>    }
>>>
>>>    return true;
>>> }
>>>
>>>
>>>
>>>
>>>        
>> _______________________________________________
>> mapguide-users mailing list
>> mapguide-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>
>>
>>      
>
> -----
>
> Dejan Gregor, MSc
> GISc Researcher and Consultant
>
> http://www.linkedin.com/in/dgregor
>    


More information about the mapguide-users mailing list