ThinkGeo.com    |     Documentation    |     Premium Support

After deploy i get this exception

Hi I have a strange problem.


Every thing is working fine on my machine but when I deploy to another machine that one throws exception to my log.


I have made a copy of SqlServerSpatial110.dll in system32 and wow.. as described in UnmanagedAssembliesDeploymentGuide.txt


But no luck, any idea what what I forgotten to do?


 System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)


   at Microsoft.SqlServer.Types.GLNativeMethods.IsValid(GeoMarshalData g, Boolean& result)
   at Microsoft.SqlServer.Types.GLNativeMethods.IsValid(GeoData g)
   at Microsoft.SqlServer.Types.SqlGeometry.IsValidExpensive()
   at Microsoft.SqlServer.Types.SqlGeometry.Construct(GeoData g, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeometry.GeometryFromText(OpenGisType type, SqlChars text, Int32 srid)
   at ThinkGeo.MapSuite.Core.BaseShape.5Rk=(Double 5hk=, BufferCapType 5xk=)
   at ThinkGeo.MapSuite.Core.BaseShape.BufferCore(Double distance, Int32 quadrantSegments, BufferCapType bufferCapType, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
   at ThinkGeo.MapSuite.Core.BaseShape.Buffer(Double distance, GeographyUnit shapeUnit, DistanceUnit distanceUnit)
   at ThinkGeo.MapSuite.Core.FeatureSource.GetFeaturesWithinDistanceOfCore(BaseShape targetShape, GeographyUnit unitOfData, DistanceUnit distanceUnit, Double distance, IEnumerable`1 returningColumnNames)
   at ThinkGeo.MapSuite.Core.FeatureSource.GetFeaturesWithinDistanceOf(BaseShape targetShape, GeographyUnit unitOfData, DistanceUnit distanceUnit, Double distance, IEnumerable`1 returningColumnNames)
   at ThinkGeo.MapSuite.Core.FeatureSource.GetFeaturesNearestTo(BaseShape targetShape, GeographyUnit unitOfData, Int32 maxItemsToFind, IEnumerable`1 returningColumnNames, Double searchRadius, DistanceUnit unitOfSearchRadius)
   at ServiceRouting.Distance.Distance.FindNearFeatures(PointShape request, FeatureLayer layer, Int32 elementsToFind)
   at ServiceRouting.Routes.RouteClass.GetShortestRouteDistance(PointShape startPoint, String CountryShortName)
   at ServiceModel.Operations.GetDiggInfo.Get(DiggInfo request)

Niels, 
  
   Double check if the computer is a 64 or 32 bit version of Windows.  This will make a difference as to which version you have to place where.  To be safe I always deploy the 64 and 32 bit version.  I would also check to make sure the managed assembly is also there in the bin directory. 
  
 David

Hi David.  
 Some progress but still exception… strange… 
  
 I copyed the dll SqlServerSpatial110.dll from  
 MapSuiteRoutingFull6.0.45.0DllPackage -> Routing\SqlServerTypes_X64 
 To destination pc. 
 On that pc using processmon i can see it opens C:\Windows\System32\SqlServerSpatial110.dll 
  
 But I get this in the error log… 
  
 System.DllNotFoundException: Unable to load DLL ‘SqlServerSpatial110.dll’: The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
    at Microsoft.SqlServer.Types.GLNativeMethods.IsValid(GeoMarshalData g, Boolean& result) 
    at Microsoft.SqlServer.Types.GLNativeMethods.IsValid(GeoData g) 
    at Microsoft.SqlServer.Types.SqlGeometry.IsValidExpensive() 
    at Microsoft.SqlServer.Types.SqlGeometry.Construct(GeoData g, Int32 srid) 
    at Microsoft.SqlServer.Types.SqlGeometry.GeometryFromText(OpenGisType type, SqlChars text, Int32 srid) 
    at ThinkGeo.MapSuite.Core.BaseShape.5Rk=(Double 5hk=, BufferCapType 5xk=) 
    at ThinkGeo.MapSuite.Core.BaseShape.BufferCore(Double distance, Int32 quadrantSegments, BufferCapType bufferCapType, GeographyUnit shapeUnit, DistanceUnit distanceUnit) 
    at ThinkGeo.MapSuite.Core.BaseShape.Buffer(Double distance, GeographyUnit shapeUnit, DistanceUnit distanceUnit) 
    at ThinkGeo.MapSuite.Core.FeatureSource.GetFeaturesWithinDistanceOfCore(BaseShape targetShape, GeographyUnit unitOfData, DistanceUnit distanceUnit, Double distance, IEnumerable`1 returningColumnNames) 
    at ThinkGeo.MapSuite.Core.FeatureSource.GetFeaturesWithinDistanceOf(BaseShape targetShape, GeographyUnit unitOfData, DistanceUnit distanceUnit, Double distance, IEnumerable`1 returningColumnNames) 
    at ThinkGeo.MapSuite.Core.FeatureSource.GetFeaturesNearestTo(BaseShape targetShape, GeographyUnit unitOfData, Int32 maxItemsToFind, IEnumerable`1 returningColumnNames, Double searchRadius, DistanceUnit unitOfSearchRadius) 
    at ServiceRouting.Distance.Distance.FindNearFeatures(PointShape request, FeatureLayer layer, Int32 elementsToFind) 
    at ServiceRouting.Routes.RouteClass.GetShortestRouteDistance(PointShape startPoint, String CountryShortName) 
    at ServiceModel.Operations.GetDiggInfo.Get(DiggInfo request) 
  


Niels, 
  
   Two things to check, first is the target system a 64 or 32 bit version of Windows?  Second is the .net program compauter to AnyCPU or X86? 
  
 David

Hi David. 
  
 Target system = 64 bit. 
 And build platform is set to AnyCPU. 


Niels, 
  
   I suggest you search your whole machine for the file and make sure it doesn’t exist anywhere else than where it should.  Next I would double check the bin directory to make sure you have the managed assembly there.  If this still doesn’t work then we will double check the build you are using on one of our clean machines. 
  
 David

Niels, 
  
   We installed a new Windows 7 N X64 machine, copy the C++ CLR Types assemblies to the correct place and run a simple application to recreate the issue and we did by throwing an exception “Unable to load DLL ‘SqlServerSpatial110.dll’”,   We found that’s because CLR Types needs VC 10.0 Runtime X86. We found a merge module Microsoft_VC100_CRT_x86.msm for it under “C:\Program Files (x86)\Common Files\Merge Modules” on a machine with VS2010 installed. We also found that there is a dependency on the .net 4.0 client framework as well.  We will be posting some updated merge modules and installers as well as updating our dependency text files.  Try installing the items above and let me know.   
  
 David

Hi Dave, 
  
 I tried all above and yet I am receiving  ‘SqlServerSpatial110.dll’ not found and if I copy that to Bin folder I’ll receive ’ An attempt was made to load a program with an incorrect format’ 
  
 Regards, 
 Ben

Hi Ben,


Have you installed the VC10.0 runtime and is your file structure like screenshots in the post gis.thinkgeo.com/Support/Dis...fault.aspx which I replied at 09-23-2012 08:04 PM?


Regards,


Edgar



Hi Edgar, 
  
 I did the things you asked (Folder structure) and i working now. 
  
 many thanks

Hello Ben, 
  
 You are welcome, please feel free to let us know your problem. 
  
 Regards, 
  
 Gary