Connectivity
來自 Azure 託管 Web 應用程序的 SQL Azure 上的“使用者登錄失敗”
我有一個使用 SQL Azure 數據庫的 Azure ASP.net MVC Web 應用程序。它工作了幾個月(有一天由於某種原因Azure更改了伺服器的名稱,我不得不再次設置它,但一切正常),但現在它不起作用。
首先我想,他們可能再次更改了伺服器名稱,但我打開了我的 SSMS 並在重置密碼後再次連接。所以我在我的應用程序連接字元串中更改了該密碼並測試一切正常,是的,調試和測試工作正常。所以我發布了,但是一旦發布應用程序就會拋出錯誤
Login failed for user 'my_username'
我在應用程序中檢查了這篇文章Azure SQL 數據庫“使用者登錄失敗”,但在 SSMS 中工作正常,這看起來很相似,但我無法做到這一點而不會出錯。
我從這裡更改了我的連接字元串
Server=tcp:SERVER_NAME.database.windows.net,1433;Database=my_db;User ID=my_username@qtdhcrrxmi;Password={my_password}; Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
對此
Server=tcp:SERVER_NAME.database.windows.net,1433;Initial Catalog=my_db;Persist Security Info=False;User ID={my_username};Password={my_password};Pooling=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
如 Azure 門戶中的數據庫連接字元串所示。我只刪除了屬性
Data Source=SERVER_NAME.database.windows.net;
我還檢查了發布過程不會更改連接字元串。
但它仍然適用於調試和 SSMS,但不適用於生產。
問題出在連接字元串中。有些事情你需要考慮。
首先,在 Visual Studio 的“設置”選項卡中的發布嚮導中有一個選項,名為“在執行時使用此連接字元串(更新目標 web.config)”,出於某種原因,無論是否選中,它似乎對我不起作用。但這首先可能是一種選擇。
另一個設置連接字元串的地方是 Azure 管理門戶。在您的 Web 應用程序設置中,在連接字元串中,您可以檢查您的應用程序有效使用了哪個連接字元串。就我而言,無論我使用什麼發布嚮導設置,這個連接字元串都是錯誤的。我剛剛刪除並使用我的數據庫使用者名和密碼再次創建它,一切都恢復正常。