ASP.NET Core 6部署IIS遇DllNotFoundException问题求助
解决ASP.NET Core 6部署IIS后DllNotFoundException问题
1. 排查DLL依赖项缺失
本地VS能正常运行,大概率是IIS服务器缺少该非托管DLL的间接依赖。可以用这两种工具分析:
- 打开Dependency Walker加载
MGWServicios.dll,查看是否有红色标记的缺失模块 - 或者在VS开发者命令提示符中执行:
dumpbin /dependents "C:\Program Files (x86)\你的DLL所在路径\MGWServicios.dll",从输出里定位未找到的依赖模块
找到缺失的依赖文件后,要么将其复制到站点发布目录的bin文件夹,要么安装对应的运行时包。
2. 手动添加DLL搜索路径
ASP.NET Core在IIS环境下默认不会搜索Program Files (x86)目录,可在代码里手动添加:
using System.Runtime.InteropServices; [DllImport("kernel32.dll", SetLastError = true)] static extern bool SetDllDirectory(string lpPathName); var builder = WebApplication.CreateBuilder(args); // 替换为你的DLL实际所在文件夹路径 SetDllDirectory(@"C:\Program Files (x86)\存放DLL的文件夹");
3. 细化权限检查
- 确保应用程序池身份(比如
ApplicationPoolIdentity)对DLL所在文件夹拥有读取和执行权限,而非仅读取权限 - 如果使用自定义账户,确认该账户属于
IIS_IUSRS组,同时检查DLL文件的NTFS权限是否已添加该账户的访问权限
4. 确认32位模式配置正确
- 进入应用程序池的高级设置,确认启用32位应用程序已设置为
True - 发布ASP.NET Core应用时,目标运行时选择
win-x86,不要用Any CPU,避免按64位模式加载
5. 从Windows事件日志找具体线索
打开事件查看器,定位到Windows日志 -> 应用程序,查找与MGWServicios.dll相关的错误日志,里面通常会给出更具体的缺失模块名称,帮助精准定位问题。
内容的提问来源于stack exchange,提问作者dlogon
相关产品推荐
相关产品推荐

