2016-04-24 110 views
2

我有一個SQL數據庫和asp.net 5網絡應用程序的Azure試用帳戶。數據庫服務器防火牆對我的本地計算機IP有一個規則,並且還有「允許訪問Azure服務」複選框。我可以從本地的Sql Server Manager連接到Azure數據庫,而不會發生任何事件。Azure的Web應用程序無法訪問天藍色的數據庫

網絡應用程序在其「應用程序設置/連接字符串」部分設置了此連接字符串。 I'have檢查WEP的應用程序使用此連接字符串:

"Server=tcp:[MyServerName].database.windows.net,1433;Database=[MyDbName];User ID=[MyUserName]@[MyServerName];Password=[MyPassword];Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

此相同的連接字符串在桌面客戶端使用,工作正常。 但是,Web應用程序無法連接到服務器,並引發此異常,這很清楚,但我不知道如何解決。

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

我知道非常類似的問題已經被問和在這裏找到答案,但他們都不是我面對完全一樣的問題,也沒有對我的解決方案。

謝謝大家的時間。

更新1

作爲一個測試,我已經配置了網站上我的本地IIS運行,對湛藍的DB,和它的作品也。所以,桌面應用程序,sql服務器管理器和IIS可以從我的本地計算機訪問這個數據庫。當然,我的IP在服務器防火牆中列入白名單,但天青的應用服務也被列入白名單,並且無法訪問。

enter image description here

更新2

喬RAIO的評論讓我仔細檢查區域配置,和這裏的當前設置的屏幕截圖。我相信一切都是正確的。

enter image description here

+0

您是否也嘗試添加Web服務器的地址數據庫的防火牆設置?當我花點時間查看是否可以進一步排除故障時,我會嘗試重現您的方案。 –

+1

該網站託管在Azure應用服務中,所以我不知道如何查找IP。但是,在sql server的防火牆設置中,有一條規則啓用了「允許訪問Azure服務」,它應該將所有應用程序列入白名單。 –

+0

您可以單擊Web應用程序的「屬性」選項卡查看IP地址。雖然從你描述的內容你不應該添加Web應用程序的IP地址。它應該工作。 Web應用程序和SQL數據庫都位於同一個Azure地理區域中嗎? –

回答

1

The web app has this connection string set up in its 'Application Settings/Connection strings' section. I'have checked the wep app IS using this connection string:

這是不是你設置你的連接字符串爲您的ASP.net 應用。

打開文件appsettings.json,第一部分應包含下列數據

"Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-WestEuroSODBAccess-96be0407-8bee-4c89-97e5-f6711136f106;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 

放置在那裏,你的連接字符串。類似於此

"Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=tcp:[MyServerName].database.windows.net,1433;Database=[MyDbName];User ID=[MyUserName]@[MyServerName];Password=[MyPassword];Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
    } 

這將解決問題。我原本沒有想到你將它設置爲一個ASP.net 5應用程序。

更多信息可以在這裏找到:http://docs.asp.net/en/latest/fundamentals/configuration.html

+0

感謝您的努力,但我已經這樣做了。它在本地運行非常好。但是當我發佈網站時,它不起作用。由於安全現在不是我的問題,我甚至會在網站上打印正在使用的連接字符串,並且它是正確的(它可以在本地IIS,SSMS,桌面應用程序中運行),但是當我發佈時會出現錯誤40。它可以與實體框架相關嗎? –

+0

我剛剛做了一個測試,建立了一個新的資源組,db server,db和web app(全部在西歐)。然後我創建了一個ASP.net 5應用程序,更新了appsettings.json中的連接字符串並將其發佈。它工作完美,你可以在這裏查看它:http://jmrwesteuroweb.azurewebsites.net/。必須有其他的東西導致這個問題。你可以通過電子郵件發送給我的網址或項目文件,我很樂意爲你效勞嗎? [email protected]。 –

+0

想到的一點是,錯誤表明這是一個「命名管道」問題,但連接tring上有「tcp」。我知道有兩種不同的協議,所以也許這是有用的。 –

相關問題