通过Web方法将大文件存储到SQL Server。

后端开发 2026-07-07

我这边有一个环境:每个用户的计算机上都在运行一个桌面应用程序,它通过服务器上的一个Web服务中的Web方法与另一台服务器上的SQL Server通信。随后,Web方法会按需要把来自SQL Server的数据返回给桌面应用程序。

这样做的目的是让SQL Server只能被一台服务器访问,而不是被每个桌面应用程序直接访问。Web方法/Web服务相当老(.NET 3.5),但不是我能轻易摆脱的架构(尽管可以按照需要更新代码),所以我只能在当前的设置中工作。

我正在尝试将文件上传到SQL Server,以便存储在varbinary(max) 列中,但到目前为止只能上传到大约25 MB的文件,随后就会出现错误“HTTP 413: Request Entity Too Large”。经过测试,问题似乎发生在从桌面应用程序向Web服务发送数据的过程,而不是从Web服务向SQL Server发送数据。

该Web服务的web.config包含

<httpRuntime maxRequestLength="102400"></httpRuntime>

在IIS或其他地方还有需要修改的设置吗?还是我应该在总体上采取其他做法,例如将文件分块上传,而不是一次性上传一个很大的数据块?

如果需要,我可以共享代码,只是现在还不知道有哪些部分是相关的。

解决方案

将web.config修改为:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="158000000" /> 
    </requestFiltering>
  </security>
</system.webServer>
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章