2016-06-19 7 views
0

リモートのMySQLサーバー(Ubuntu)に接続するASP.NET MVC Webアプリケーションがあります。私は自分のWindows Serverまたはローカルホスト上の任意の問題を抱えていたことがありませんが、私は最近のAzureアプリサービスにアプリを移動したとき、私は(時にはそれが時々ない、動作します)ランダム接続エラーを取得:Azure C#アプリからリモートMySQLサーバーへのランダムな接続の問題

Unable to connect to any of the specified MySQL hosts. 
at MySql.Data.MySqlClient.NativeDriver.Open() 
at MySql.Data.MySqlClient.Driver.Open() 
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuildersettings) 
at MySql.Data.MySqlClient.MySqlConnection.Open() 

何のインナーありません例外。

using(var con = new MySqlConnection(connectionString)) 
{ 
    con.Open(); 
    using(var cmd = CreateCommand(sql, con)) 
    { 
    cmd.Execute();   
    } 
    con.Close(); 
} 

接続文字列は次のようになります:; UID = xxxの; PWD = xxxの;データベース= XXX;接続 タイムアウト= 10;プール= falseを

サーバー= xxxxの私のコードは、ビットのようになります。 ;プロトコル=ソケット;ポート= 3306;

このトピックでは、同じ問題について説明します。

これはUbuntuのサーバー上のファイアウォール、接続が失敗したときに、私も、着信表示されていないとは何の関係もありませんファイアウォール内の要求。私はまた、接続文字列内の他の設定を使用しようとしました。何か案は?

+0

「ランダム接続の問題」とはどういう意味ですか?時には正しく動作することを意味しますか?明確にするためにあなたの質問を編集してください。 –

+0

提供された情報はあまり役に立ちません。 – Drew

+0

@OllieJones確かに、ほとんどの場合、正常に動作しますが、時にはこの接続エラーが発生します。 – Marthijn

答えて

0

protocol=socketは、UNIXドメインソケットを持つローカルMySQLサーバへの接続をドットネットインスタンスに指示します。しかし、あなたは明らかにTCP/IPを使ってリモートサーバーに接続しようとしています。接続文字列からprotocol=socketを省略すると役立ちます。

あなたのUbuntuサーバーにホスト名がありますか?その場合は、IPアドレスの代わりに使用してください。 AzureからあなたのUbuntuサーバへのIPルートは安定していますか、それとも上下していますか? AzureホストからUbuntuサーバにpingを実行するとどうなりますか?

注:この接続にはtls(ssl)を使用することを検討してください。 tlsのないMySQLプロトコルはあまり安全ではありません。

+0

ご返信ありがとうございます、私はあなたの提案をお試しください。前にホスト名を使用しましたが、DNSに問題がないことを確認するためにIPに変更しました。 – Marthijn

関連する問題