System.DllNotFoundException:无法加载DLL' SqlServerSpatial110.dll':无法找到指定的模块

时间:2015-01-30 16:37:11

标签: c# asp.net .net dll geospatial

我正在做一个在地理距离计算方面有一些功能的项目。所以我通过为该函数添加nuget包SqlServerSpatial110.dll在实体框架中使用地理数据类型。

我认为我的代码是正确的。一切都在本地服务器上工作。但是当我将其上传到服务器时,它会显示以下错误:

  

System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.DllNotFoundException:无法加载DLL“SqlServerSpatial110.dll”:找不到指定的模块。 (HRESULT异常:0x8007007E)

请告诉我将SqlServerSpatial110.dll上传到服务器的步骤。

3 个答案:

答案 0 :(得分:2)

在应用程序的Web.config中添加Microsoft.SqlServer.Types的引用解决了该问题。

<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" />
    <bindingRedirect oldVersion="1.0.0.0-11.0.0.0" newVersion="10.0.0.0" />
  </dependentAssembly>
</assemblyBinding></runtime>

答案 1 :(得分:0)

请检查以确保服务器上已安装DLL:

C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.Types.dll
C:\Windows\System32\SqlServerSpatial110.dll

请检查您的AppPool。如果您要重新使用旧的AppPool,请确保您的AppPool Advanced Settings - &gt; Enable 32-Bit ApplicationsFalse

这解决了Windows 2012 Server上的类似问题。

答案 2 :(得分:0)

如果没有任何效果,请尝试制作 平台目标成为任何 CPU 取消选中首选 32 位 选中允许不安全代码

上述解决方案对我来说很糟糕。