Windows Azure Web服务无法连接到SQL数据库

时间:2013-10-16 22:06:13

标签: c# sql sql-server entity-framework azure

我正在研究这个问题已经有一段时间了,我不知道该怎么做..所以这就是问题所在。

我有一个Azure Web服务,它完全适用于localy。它应该连接到Azure SQL数据库(我使用相同的ConnectionString进行调试和azure ..所以它应该是正确的)

使用IntelliTrace,我发现了这些错误:

Requested registry access is not allowed.
System.IO.FileNotFoundException Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=Neutral....
System.Data.Entity.Core.ProviderIncompatibleException
System.Data.SqlClient.SqlException    A network-related or instance-specific error occured while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct... (This about 50 times)
System.Threading.WaitHandleCannotBeOpenedException              No handle of the given name exists.
System.Security.SecurityException          Requested registry access is not allowed
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironmentException        error 
System.Threading.WaitHandleCannotBeOpenedException            No handle of the given name exists.

(异常堆栈,最新,最旧)

在我的web.config中,我设置了EF和ConnectionString,如下所示:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="EntityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false"/>
</configSections>
<connectionStrings>
  <add name="DefaultConnection" connectionString="Server=SERVER.database.windows.net;Database=LeagueMetaDatabase;User ID=USER@ksew7pk8ad;Password=PW;Trusted_Connection=False;Encrypt=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>

我还停用了EF组件的“特定版本”并激活了“复制本地”。 我检查了服务器上服务的bin文件夹,dll就在那里。

该服务使用了大量的异步,但正如已经说的那样,它可以在本地运行..我还在服务器上安装了.NET 4.5.1,以确保不是问题

//编辑 首先,感谢迄今为止的所有帮助!

我尝试缩小问题范围......重建洞项目并试图找到不起作用的东西。似乎异步任务无法读取Azure服务器云上的Web.config中的ConnectionString。在模拟器中,它可以工作。我将ConnectionString硬编码到Context中,它正在以这种方式工作。

任何人都可以告诉我是什么造成了这种行为以及如何将其重新放回Web.config?

3 个答案:

答案 0 :(得分:2)

您的解决方案如何部署到Azure?您使用的是云服务或网站吗?如果您正在运行Azure网站,则问题可能与您在web.config和Azure网站中的连接字符串名称相同。如果是这种情况,您可能希望尝试重命名Azure管理门户中为您的网站定义的连接字符串。这可以通过配置管理页面完成。

希望这有帮助。

答案 1 :(得分:0)

DB&amp;同一数据中心的云服务?如果没有,请通过Azure控制面板链接您的资源和/或确保您已在数据库配置部分启用了“允许连接天蓝色服务”。

此外,请确保您的SERVER连接指定“tcp” - Windows Azure SQL数据库服务仅适用于TCP端口1433.要从您的计算机访问SQL数据库数据库,请确保您的防火墙允许TCP端口上的传出TCP通信1433(来自Guidelines for Connecting to Windows Azure SQL Database)。如果从DB仪表板页面获取ADO连接字符串,您应该看到:

Server=tcp:{your_servername}.database.windows.net,1433;Database={your_database_name};User ID={your_userid};Password={your_password_here};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;

答案 2 :(得分:0)

首先,感谢迄今为止的所有帮助!

我尝试缩小问题范围......重建洞项目并试图找到不起作用的东西。 似乎异步任务无法读取Azure服务器云上的Web.config中的ConnectionString。在模拟器中,它可以工作。我将ConnectionString硬编码到Context中,它正在以这种方式工作。

任何人都可以告诉我是什么造成了这种行为以及如何将其重新放回Web.config?