我正在处理WCF服务应用程序。我想找到最接近某人的位置。 我的问题是当我想调用与System.Data.Entity.Spatial.DbGeography相关的任何方法时,都会收到此错误 “无法找到此提供程序的空间类型和功能,因为找不到程序集'Microsoft.SqlServer.Types'版本10或更高版本。”
我在Visual Studio 2017解决方案中通过NuGet安装了Microsoft.SqlServer.Types 并在调用DbGeography类之前先调用SqlServerTypes程序集 private bool _IsSqlServerTypesLoaded;
private void CheckSqlServerTypes()
{
if (!_IsSqlServerTypesLoaded)
{
System.Data.Entity.SqlServer.SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=14.0.1016.290, Culture=neutral, PublicKeyToken=89845dcd8080cc91";
SqlServerTypes.Utilities.LoadNativeAssemblies(System.IO.Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "bin"));
_IsSqlServerTypesLoaded = true;
}
}
在尝试查询位置之前,我会调用CheckSqlServerTypes() 但我仍然收到此错误 “空间类型和功能不适用于此提供程序,因为找不到程序集'Microsoft.SqlServer.Types'版本10或更高版本。”
我的错误是什么?
答案 0 :(得分:0)
我发现了自己的错误并想分享,可能对其他人有用
在上面的代码中,我将“版本= 14.0.1016.290”更改为“版本= 14.0.0.0”
还将其添加到web.config
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
</assemblyBinding>
一切正常