2016-04-24 58 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”。我知道有两种不同的协议,所以也许这是有用的。 –

相关问题