2017-06-19 248 views
1

我想從我創建的Azure功能連接到Azure的MySQL數據庫(預覽)。但是,當我嘗試打開連接時,出現錯誤消息Authentication failed because the remote party has closed the transport stream無法通過Azure功能連接到Azure MySQL數據庫 - C#

我的功能代碼如下所示:

#r "System.Data" <--- Uploaded System.Data.dll into the root folder 
#r "MySql.Data"  <--- Uploaded MySql.Data.dll (6.9) into root folder 

using MySql.Data; 
using MySql.Data.MySqlClient; 
using System.Configuration; 

public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
    var connStr = ConfigurationManager.ConnectionStrings["MySQL_Conn"].ConnectionString; 
    using(MySqlConnection conn = new MySqlConnection(connStr)) 
    { 
     try{ 
      conn.Open(); 
      log.Info("Connection opened"); 
     }catch(Exception ex){ 
      log.Info("Error: " + ex.Message); 
     } 
    } 
    //log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 
} 

排除錯誤,這是我到目前爲止已經試過:

  • 複製連接字符串,並與MySQL工作臺嘗試過了,它的工作很好
  • 將我函數的應用程序的IP地址添加到MySQL允許的IP列表中。

這些方法都不適用於我。

我會很高興,如果有人能指出我在正確的方向,因爲大多數指南是用於SQL Server,而不是用C#MySQL。

謝謝

+0

你會很高興,如果你可以指向到SQL Server?我不明白。請重寫。錯誤本身:添加您的連接字符串(不含密碼)。檢查你的mysql用戶是否允許你在你的應用程序中從IP連接到你的應用程序。 –

+0

我的問題是關於Azure MySQL和Azure功能。我在問題中說我的連接字符串工作正常。所以我希望有人協助解決這個問題,因爲我似乎無法找到與MySQL的Azure函數相關的指南。這是我的連接字符串的樣子:'Server = {your_servername};端口= 3306;數據庫= {your_database}; UID = {your_username}; PWD = {your_password}; SslMode =首選;' – adjaharrison

+0

鑑於您有本地驗證的控制檯應用程序。嘗試在kudu控制檯(https://github.com/projectkudu/kudu/wiki/Kudu-console)上運行相同的命令以隔離如果Azure WebApps或函數特定的排除規則。 –

回答

1

我得到一個錯誤說Authentication failed because the remote party has closed the transport stream

我可以在我身邊重現這個問題。看來MySql.Data的版本會導致這個問題,如果我在upload project.json file上添加了對MySql.Data "7.0.7-m61"的引用,我可以連接到MySQL數據庫(預覽版)。

project.json

{ 
    "frameworks": { 
    "net46":{ 
     "dependencies": { 
     "MySql.Data": "7.0.7-m61" 
     } 
    } 
    } 
} 

功能代碼和日誌

enter image description here