Entity Framework 6を使用してローカルMySQLデータベースに接続するC#/ WPFアプリケーションを開発しました。アプリケーションは、ローカルコンピュータで実行しているときに完全に動作します。しかし、他のシステムにアプリケーションをインストールして実行すると、データベースにアクセスする必要があるときにクラッシュします。C#WPFアプリケーションとローカルデータベースを別のコンピュータで使用するとクラッシュする
例外をキャッチしてメッセージをポップアップすると、「値はnullではありません。パラメータ名:ソース」というメッセージが表示されます。この投稿(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 =>でipconfig =>はIPv4から取得したローカルシステムの実際のIPアドレスです。
多くのグーグルとスタックオーバーフローによる検索の後、私はまだこれに対する解決策を見つけていません。私は他のコンピュータにデータベースのローカルインスタンスを置いておきたいので、ローカルコンピュータ上にホストされているデータベースにすべてリモートで接続する必要があります。すべてのシステムが同じネットワーク上にあり、他のコンピュータからのローカルデータベースを使用してコンピュータにpingできるため、接続に問題があるとは思わない。私は、次の文を使用してMySQL内の他のコンピュータへのリモートアクセスを提供しようとしている
: CREATE USER '%'@'(IPADDRESS)' IDENTIFIED BY ''; GRANT ALL PRIVILEGES ON *.* TO '%'@'(IPADDRESS)' WITH GRANT OPTION;
また、このポスト(WPF application doesn't work in other computers)でアサフのソリューション、次の試してみました。しかし、どちらも私のために働かなかった。
誰かがC#/ WPFアプリケーションをMySQLデータベースにアクセスして公開する方法を説明することができれば、それは素晴らしいことです。
EDIT:コードをさらに編集して例外を表示した後、「基本プロバイダがオープンに失敗しました」というエラーが表示されます。それを今見て。
EDIT:SOLVED!ありがとうございました。 'root'(How to allow remote connection to mysql)としてリモート接続を有効にし、特権をフラッシュし、MySQL Serverを再起動するために必要です。その後、アプリケーションが機能しました。
「root」としてリモート接続を有効にします。https://stackoverflow.com/questions/14779104/how-to-allow-remote-connection-to-mysql – obl
残念ながら、それはそれをしませんでした。ただし、例外がどこから来ているのかを確認するためにもう少しコードを編集した後、「基礎となるプロバイダがOpenで失敗しました」というエラーが表示されます。これを今見てください。 – JonTan
接続ポートがデータベースサーバー(ファイアウォール設定)で開いているかどうかを確認しましたか?デフォルトのポートはmysqlの場合は3306です... – hugoterelle