You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署到服务器后WebApi出现Microsoft.SqlServer.Types缺失错误求助

解决WebApi部署后出现"Spatial types and functions are not available..."错误的方案

我之前也碰到过一模一样的问题——本地调试完全正常,一部署到服务器就直接抛这个空间类型相关的错误,折腾了好一会儿才搞定,给你几个靠谱的解决办法:

方法一:通过NuGet安装Microsoft.SqlServer.Types包(最推荐)

这个方法能自动处理依赖,避免手动复制文件的麻烦:

  • 打开你的WebApi项目,右键选择「管理NuGet程序包」
  • 在搜索框输入Microsoft.SqlServer.Types,选择合适的版本安装(建议和你本地使用的SQL Server版本匹配,或者选兼容的最新稳定版)
  • 安装完成后,在项目的Global.asax(如果是Framework项目)或者Startup类(Core项目)里添加初始化代码,确保程序启动时能加载原生依赖:
// Framework项目示例(Global.asax的Application_Start方法中)
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

// Core项目示例(Startup.cs的Configure方法中)
SqlServerTypes.Utilities.LoadNativeAssemblies(AppContext.BaseDirectory);

部署时,相关的原生DLL会被自动打包到bin目录,服务器就能找到依赖了。

方法二:手动部署缺失的DLL文件

如果不想用NuGet,也可以手动复制依赖文件:

  • 在本地找到SQL Server安装目录下的Microsoft.SqlServer.Types.dll(通常路径是C:\Program Files\Microsoft SQL Server\XX.X\Shared,XX.X对应SQL Server版本,比如140对应2017版)
  • 同时复制对应版本的原生空间DLL:比如SqlServerSpatial110.dll/SqlServerSpatial140.dll,注意区分x86和x64版本,根据服务器系统架构选择
  • 把这些DLL放到WebApi项目的bin目录下,再重新部署到服务器

方法三:通过Web.config绑定重定向适配版本

如果服务器上已经安装了SQL Server相关组件,但版本和项目依赖不匹配,可以用绑定重定向解决:
在Web.config的<configuration>节点内添加以下配置(注意修改版本号为你实际使用的版本):

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

补充说明

本地正常运行是因为你本地大概率安装了SQL Server或其客户端组件,自带了这些空间类型依赖;而服务器上默认没有安装这些组件,所以才会找不到对应的程序集。优先用方法一,省心不容易出错。

内容的提问来源于stack exchange,提问作者chaitanya k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:07:34