MySqlConnection无法打开,缺失System.Security.Permissions程序集求助
问题分析与解决方案
这个报错和数据库本身是否存在无关,核心是你的ASP.NET Core项目缺少System.Security.Permissions程序集引用,或者MySQL驱动版本与.NET Core版本不兼容导致的依赖缺失。
解决步骤:
1. 安装/更新System.Security.Permissions NuGet包
直接通过NuGet包管理器安装对应版本的包:
- 打开NuGet包管理器(右键项目 → 管理NuGet程序包),搜索
System.Security.Permissions,选择与你项目.NET Core版本匹配的版本安装(比如.NET 6选6.x版本,.NET 7选7.x版本) - 或者使用命令行执行:
dotnet add package System.Security.Permissions
2. 确保MySQL驱动版本与.NET Core兼容
如果使用的是MySql.Data(官方驱动)或MySqlConnector(第三方更活跃的驱动),建议:
- 卸载当前驱动,安装最新稳定版的
MySqlConnector(推荐这个,对.NET Core支持更好) - 避免使用过于老旧的驱动版本,旧版本可能依赖.NET Framework特有的程序集,而这些程序集在.NET Core中需要单独引用
3. 清理重建项目
- 右键项目 → 清理
- 手动删除项目目录下的
bin和obj文件夹 - 重新生成项目后再尝试运行
4. 检查.csproj文件中的引用配置
打开项目的.csproj文件,确认System.Security.Permissions的引用版本与项目TargetFramework匹配,示例:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="System.Security.Permissions" Version="6.0.0" /> <PackageReference Include="MySqlConnector" Version="2.2.7" /> </ItemGroup> </Project>
补充说明:
如果是数据库连接失败(比如数据库未找到、权限不足),报错信息会是类似Unable to connect to any of the specified MySQL hosts或Access denied for user 'xxx'@'xxx',而非程序集找不到的错误,所以当前问题重点在依赖修复。
内容的提问来源于stack exchange,提问作者Тарас Гуледза
相关产品推荐
相关产品推荐

