建立與 SQL Server 的連接時發生與網路相關或特定於實例的錯誤
我在 azurewebsites 上有一個簡單的 mvc 網站(使用 VS Internet 模板),與同一數據中心的 SQL Azure 數據庫通信。這個時候的數據庫只是做內置的SimpleMembership Provider。我已經從預設的 App_Data mdf 文件切換到 Azure SQL。它工作正常,但有時會在一段時間後給出:
建立與 SQL Server 的連接時發生與網路相關或特定於實例的錯誤。伺服器未找到或無法訪問。驗證實例名稱是否正確以及 SQL Server 是否配置為允許遠端連接。(提供者:SQL 網路介面,錯誤:26 - 錯誤定位伺服器/指定的實例)
有一條長消息:
SQLExpress 數據庫文件自動創建錯誤:
連接字元串使用應用程序 App_Data 目錄中的數據庫位置指定本地 Sql Server Express 實例。提供者試圖自動創建應用程序服務數據庫,因為提供者確定該數據庫不存在。成功檢查應用程序服務數據庫是否存在並自動創建應用程序服務數據庫需要以下配置要求:
但是我沒有使用 SQL Server Express 的連接字元串!
立即重新啟動網站不會消除錯誤。
無需更改任何內容並在 15 分鐘後重新啟動網站:
502 - Web 伺服器在充當網關或代理伺服器時收到無效響應。
您要查找的頁面有問題,無法顯示。當 Web 伺服器(作為網關或代理)聯繫上游內容伺服器時,它收到了來自內容伺服器的無效響應。
以前,我可以通過從 VS 重新發布來將網站恢復到工作狀態。但是在過去的一個小時裡,我嘗試了再嘗試,但我無法讓網站再次執行。
SQL Server Express 的真正問題是什麼?
我的連接字元串部分包含:
<connectionStrings> <add name="DefaultConnection" connectionString="Server=tcp:sabl6h4---.database.windows.net,1433;Database=MVC;User ID=test@sabl6h4---;Password=----;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" /> <add name="Entities" connectionString="metadata=res://*/Data.Model1.csdl|res://*/Data.Model1.ssdl|res://*/Data.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=sabl6h4---.database.windows.net;initial catalog=MVC;user id=test;password=----;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>可以肯定的是,我將 sabl6h4—.database.windows.net 複製並粘貼到 SSMS 中並使用登錄測試連接,它打開了數據庫沒有問題。
一天后:我創建了一個新的 azurewebsite 並發布了完全相同的項目和相同的 web.config。它工作正常,沒有問題。幾分鐘後,發生了完全相同的錯誤!
三個多小時後:去吃午飯,回來,點擊瀏覽器刷新按鈕,網站又重新啟動了。我確信有人在玩弄後端的設置。
添加一個
<clear/>元素作為 connectionstrings 元素下的第一個元素,以確保沒有字元串被繼承。另外,我假設您的 Azure SQL DB 設置了適當的防火牆設置,允許您的 IP 部署 ASP.net 程式碼?
我也有這個錯誤。但就我而言,我沒有註意到連接字元串被發布嚮導覆蓋。我通過轉到發布嚮導中的設置選項卡並取消選中“在執行時使用此連接字元串(更新目標 web.config)”解決了這個問題