发布到服务器时 DbGeography 不起作用

问题描述

以下代码在调试时在我的本地机器上工作,但在发布到服务器时抛出错误

public IEnumerable<Restaurant> Nearby(double latitude,double longitude,double distance)
{
    var region = DbGeography.PointFromText(string.Format("POINT({1} {0})",latitude,longitude),4326).Buffer(10000);
    return Find(x => sqlSpatialFunctions.Filter(x.Location,region) ?? false);
}

疯狂搜索后,我从nuget安装了Microsoft.sqlServer.Types。 (版本 14.0.1016.290)

在 ~/bin 文件夹中添加了所需的 dll(由上述包提供)。

在 Global.asax.cs 中添加以下代码

sqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

代码仍然抛出“500 Internal Server Error。发生错误”。

注意:这在我的本地机器上运行良好。

解决方法

哇,这个 answer 终于奏效了。

注意:我必须包含来自

Microsoft.SqlServer.Types.dll

~/packages/Microsoft.SqlServer.Types.14.0.1016.290\lib\net40 也在 ~/bin 文件夹中