【问题标题】:System.DllNotFoundException: Unable to load DLL 'SqlServerSpatial110.dll': The specified module could not be foundSystem.DllNotFoundException:无法加载 DLL 'SqlServerSpatial110.dll':找不到指定的模块
【发布时间】:2015-01-30 16:37:11
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你 DLL 的 CopytoOutputDirectory 是否设置为 CopyAlways?
  • Copy Local = true 可能会为第 3 方 .dll 纠正这一点。另一种选择是将 Lib 文件夹添加到项目中,并将所有您知道需要的 .dll 放在那里适用于所有构建和部署..
  • 是的。我将属性设置为 Copy Local = true。但问题出在服务器端。我需要在项目中添加引用吗?有人建议创建 Global.asax.cs。我试过了,但仍然发生错误。

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


【解决方案1】:

在应用程序的 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>

【讨论】:

    【解决方案2】:

    请检查以确保 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 --> Enable 32-Bit ApplicationsFalse

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

    【讨论】:

      【解决方案3】:

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

      上面的解决方案适合我。

      【讨论】:

        猜你喜欢
        • 2022-01-10
        • 1970-01-01
        • 2023-02-22
        • 1970-01-01
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多