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

时间:2017-07-21 21:31:23

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

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

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

这是我在App.config中的连接字符串: connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;provider=MySql.Data.MySqlClient;provider connection string="server=(ipAddress);user id=root;password=password;persistsecurityinfo=True;database=practice""

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

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

我尝试使用以下语句远程访问MySQL中的其他计算机: CREATE USER '%'@'(IPADDRESS)' IDENTIFIED BY ''; GRANT ALL PRIVILEGES ON *.* TO '%'@'(IPADDRESS)' WITH GRANT OPTION; 在这篇文章中也尝试了Asaf的解决方案(WPF application doesn't work in other computers)。但是,对我来说都不起作用。

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

编辑:在更多地编辑代码以查看异常后,我收到错误"底层提供程序在打开时失败。"现在调查一下。

编辑:解决了!谢谢你。需要启用远程连接作为' root' (How to allow remote connection to mysql),刷新权限,然后重启MySQL Server。之后,该应用程序工作。

1 个答案:

答案 0 :(得分:0)

感谢Obl,我通过启用远程连接来解决问题,因为root' root' (How to allow remote connection to mysql)。之后,只需要刷新权限并重启MySQL服务器。