我正在做一个在地理距离计算方面有一些功能的项目。所以我通过为该函数添加nuget包SqlServerSpatial110.dll
在实体框架中使用地理数据类型。
我认为我的代码是正确的。一切都在本地服务器上工作。但是当我将其上传到服务器时,它会显示以下错误:
System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.DllNotFoundException:无法加载DLL“SqlServerSpatial110.dll”:找不到指定的模块。 (HRESULT异常:0x8007007E)
请告诉我将SqlServerSpatial110.dll
上传到服务器的步骤。
答案 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 Applications
为False
。
这解决了Windows 2012 Server
上的类似问题。
答案 2 :(得分:0)
如果没有任何效果,请尝试制作 平台目标成为任何 CPU 取消选中首选 32 位 选中允许不安全代码
上述解决方案对我来说很糟糕。