在另一台计算机上使用时,具有本地数据库的 C# WPF 应用程序崩溃

标签 c# mysql wpf entity-framework entity-framework-6

我利用 Entity Framework 6 开发了一个 C#/WPF 应用程序来连接到本地 MySQL 数据库。该应用程序在本地计算机上运行时运行良好。但是,当我在其他系统上安装该应用程序并运行它时,它在需要访问数据库时崩溃了。

捕获异常并弹出消息,我收到消息“值不能为空。参数名称:源。”从这篇文章,Value cannot be null. Parameter name: source ,我认为这是因为我的连接字符串错误或者我没有正确执行某些操作来允许远程数据库访问。

这是我在 App.config 中的连接字符串: connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;provider=MySql.Data.MySqlClient;提供程序连接字符串= “服务器=(ip地址);用户id=root;密码=密码;persistsecurityinfo=True;数据库=实践””

我使用的IP地址是通过cmd => ipconfig => IPv4获取的本地系统的真实IP地址。

经过大量谷歌搜索和堆栈溢出搜索后,我还没有找到解决方案。我不希望其他计算机上有数据库的本地实例,它们都应该远程连接到本地计算机上托管的数据库。我认为连接应该不会有任何问题,因为所有系统都位于同一网络上,并且我可以从其他计算机上使用本地数据库对计算机执行 ping 操作。

我尝试使用以下语句对 MySQL 中的其他计算机进行远程访问: 创建由 '' 标识的用户 '%'@'(IPADDRESS)'; 使用授予选项将 *.* 上的所有权限授予 '%'@'(IPADDRESS)'; 还尝试按照 Asaf 在这篇文章中的解决方案(WPF application doesn't work in other computers)。然而,这两种方法都不适合我。

如果有人可以解释如何发布可访问 MySQL 数据库的 C#/WPF 应用程序,那就太好了。

编辑:进一步编辑代码以查看异常后,我收到错误“底层提供程序在打开时失败”。现在就来研究一下。

编辑:解决了!谢谢你。需要以“root”身份启用远程连接( How to allow remote connection to mysql )、刷新权限并重新启动 MySQL 服务器。之后,应用程序就成功了。

最佳答案

感谢 Obl,我通过以“root”身份启用远程连接(How to allow remote connection to mysql)解决了这个问题。之后,只需刷新权限并重新启动 MySQL 服务器即可。

关于在另一台计算机上使用时,具有本地数据库的 C# WPF 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45246995/

相关文章:

c# - 创建简单的 Ping

php - 准备好的语句导致 while 循环错误

wpf - WPF仅执行一个应用程序实例

c# - 如何在 WPF 窗口中显示屏幕保护程序的预览

c# - 在XAML中将CollectionViewSource与CompositeCollection结合使用

javascript - 将简单的 JavaScript 代码转换为 C#

java - 如何在 Java 中使用/反序列化 .Net WCF 服务 JSON 响应

c# - 如何在WPF中的左侧添加一个复选框

mysql - 过去 7 天的返回计数,已填写缺失日期

MySQL GROUP BY 按最低字段值分组