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

C# Windows服务实例化EF实体模型时抛出System.IO.FileNotFoundException异常

首先可以直接排除「程序运行时尝试在线拉取Nuget包」的猜测:.NET Framework 程序的Nuget依赖全部是编译时就需要本地存在的组件,运行时没有自动拉取依赖包的逻辑,和服务器是否联网完全无关。

你遇到的问题本质是部署时漏了依赖文件:你只迁移了可执行文件和配置文件,Entity Framework 6相关的核心依赖DLL没有一起复制到服务器,而目标服务器的全局程序集缓存(GAC)中也没有预装对应版本的EF6组件,所以程序加载配置节、实例化DbContext时会抛出程序集找不到的FileNotFoundException。

之前你用try/catch没捕获到异常,是因为该错误属于程序集绑定阶段的异常,发生在方法JIT编译环节,还未执行到你包裹的业务代码块,所以无法通过业务层的try/catch捕获。

解决方案

  • 优先采用全量发布的方式部署:在本地开发环境的Visual Studio中右键项目,选择「发布」,目标选择「文件夹」,发布完成后将整个发布目录复制到服务器即可,发布过程会自动将所有依赖项(包括EntityFramework.dll、EntityFramework.SqlServer.dll两个EF核心文件,以及其他项目引用的第三方组件)全部输出。
  • 不想走发布流程的话,直接复制本地Release编译生成的整个bin目录到服务器,不要手动筛选只复制exe和config文件。
  • 额外校验项:确认Windows Server 2012 R2服务器上已经安装了.NET Framework 4.7.2运行时,该系统默认没有预装这个版本,需要手动安装后才能运行基于4.7.2开发的程序。

内容的提问来源于stack exchange,提问作者jaredlee.dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:06