1

我已经为此工作了一段时间,但我不知道该怎么办了..所以这就是问题所在。

我有一个 Azure Webservice,它可以在本地完美运行。它应该连接到 Azure SQL 数据库(我使用相同的 ConnectionString 进行调试和天蓝色..所以它应该是正确的)

使用 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?

4

3 回答 3

2

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

希望这可以帮助。

于 2013-10-17T20:16:04.333 回答
0

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

此外,请确保您的 SERVER 连接指定“tcp” - Windows Azure SQL 数据库服务仅适用于 TCP 端口 1433。要从您的计算机访问 SQL 数据库数据库,请确保您的防火墙允许 TCP 端口 1433 上的传出 TCP 通信(来自连接到 Windows Azure SQL 数据库的指南)。如果您从 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;
于 2013-10-16T22:35:38.613 回答
0

首先,感谢到目前为止的所有帮助!

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

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

于 2013-10-17T15:57:11.130 回答