16

I have a .NET MVC web application referencing System.Data.Spatial so I can use the DbGeography datatype on a property for some geolocation stuff. I'm using Visual Studio 2012 with .NET 4.5 and do not have a full installation of SQL Server on my development machine (only localdb).

The app works great until I push it to Azure. As soon as my app hits my DbGeography property, it throws this error:

Unable to load DLL 'SqlServerSpatial.dll': The specified module could not be found.

Has anyone else encountered this issue?

4

8 回答 8

14

SqlServerSpatial.dll 是非托管代码。您必须在服务器上安装正确的版本(64 位)。将 DLL 添加到您的项目中。将SqlServerSpatial110.dll的属性设置为“Copy to Output directory = Copy always”</p>

您可以在此处找到详细信息

于 2013-06-01T15:23:57.907 回答
3

SQL 2012 也安装了这个 dll,SQL 2014 没有!您必须在计算机上安装 Microsoft System CLR Types for SQL Server 2008 R2。

  1. http://www.microsoft.com/en-us/download/details.aspx?id=26728
  2. 点击下载
  3. 根据您的处理器架构检查其中一项:

    • 1033\x64\SQLSysClrTypes.msi
    • 1033\x86\SQLSysClrTypes.msi
    • 1033\IA64\SQLSysClrTypes.msi
  4. 单击下一步

编辑

作为Ian Grainger评论,您必须根据您的 IIS 安装正确的版本。显然 IIS Express 默认以 32 位模式运行。

于 2017-01-20T10:25:35.877 回答
2
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
  <assemblyIdentity name="Microsoft.SqlServer.Types" 
  publicKeyToken="89845dcd8080cc91" culture="neutral" />
  <bindingRedirect oldVersion="10.0.0.0" newVersion="12.0.0.0" />
  </dependentAssembly>
  </assemblyBinding>
</runtime>
于 2018-01-31T04:04:43.810 回答
1

我遇到了这个问题,真的错过了 SqlServerSpatial110.dll

我最终按照此处的说明进行操作:

http://dllyes.com/sqlserverspatial110-dll/

基本上你需要掌握那个 .dll 然后

如果您运行的是 32 位 Windows,请将 SqlServerSpatial110.dll 放在 \Windows\System32(通常位于磁盘 C)中。如果您运行的是 64 位 Windows,请另外将文件放在 \Windows\SysWOW64 中。

于 2016-08-18T03:41:23.640 回答
0

确保您的 dll(例如“sqlserverspatial110.dll”、“sqlserverspatial120.dll”、..)位于此路径“C:\Windows\SysWOW64”中;

于 2021-10-29T11:28:50.580 回答
0

我为此苦苦挣扎了很长一段时间,我安装了所需的文件,但它仍然无法正常工作。

显然,该项目想使用 x86 SqlServerSpatial.dll 所以我在工具>选项>WebProjects>使用64位IIS中将IIS Express Build更改为x64 这是屏幕

无需添加新的 nuget 包,只需从 Microsoft 页面安装 SQLSysClrTypes:http: //go.microsoft.com/fwlink/ ?LinkID=188391&clcid=0x409 应该没问题;)

希望它可以帮助某人!

于 2019-07-11T06:19:48.613 回答
-1
I had the same issue in godaddy VPS with windows server 2012 r2

我通过将我的 EF5 更新到 EF6 来解决它

在包管理器控制台中运行到 EF5 到 EF 最新

Install-Package EntityFramework 
于 2017-12-16T17:42:08.050 回答
-1
  • SqlGeometrySqlGeography类型可以通过引用Microsoft.SqlServer.Types.dll.
  • Microsoft.SqlServer.Types.dll是一个托管库,并且有一些非托管库作为先决条件,它们就像 SqlServerSpatialXXX.dllmsvcrXXX.dll
  • 自 Sql Server 2008 以来,可以使用不同的版本 Microsoft.SqlServer.Types.dll,但是,从 2012 年开始,我看不到任何功能变化。

对于详细的解决方案,您可能希望在另一篇类似的帖子中看到我的答案。

于 2017-01-15T14:30:02.263 回答