Windows Azure で空間型 DbGeography を動作させるために、非常に苛立たしい数日を費やしました。DbGeography.Distance() メソッドを使用して距離を計算する Webrole を持つ Windows Azure プロジェクトがあります。ローカル コンピューターでは魅力的に動作しますが、Azure に公開すると例外が発生します。
Search spa failed message: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at Microsoft.SqlServer.Types.GLNativeMethods.GeodeticDistance(GeoMarshalData g1, GeoMarshalData g2, EllipsoidParameters ellipsoidParameters, Double& result)
at Microsoft.SqlServer.Types.GLNativeMethods.GeodeticDistance(GeoData g1, GeoData g2, EllipsoidParameters ellipsoidParameters)
at Microsoft.SqlServer.Types.SqlGeography.STDistance(SqlGeography other)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Data.Entity.SqlServer.SqlSpatialServices.Distance(DbGeography geographyValue, DbGeography otherGeography)
at System.Data.Entity.Spatial.DbGeography.Distance(DbGeography other)
at DataAccess.Util.DistanceHelper.GetDistanceDictionary(DbGeography spaLocation)
at MvcWebRole.Controllers.SpaController.SearchSpa(String searchString)
私はブログ投稿http://alastaira.wordpress.com/2011/08/19/spatial-applications-in-windows-azure-redux-include-denali/に従って、 Sql.Server.Types と SqlServerSpatial.dll への参照を追加しました。 、msvcp100.dll および msvcr100.dll。Thist は実際には EF5 と Azure Web サイト プロジェクトで動作しましたが、EF6 とクラウド サービス プロジェクトにアップグレードしたときは動作しませんでした :(