1

我有一个运行 Windows azure 的站点,我已经通过链接资源连接了数据库,看起来该站点应该使用数据库。我还在 web.config 文件中包含了正确的连接字符串。

当我在本地运行网站并使用 azure 数据库的连接字符串作为我的默认连接时,一切正常,我已经看到从本地计算机更新数据反映在远程数据库中。

每当我尝试访问任何产生数据库命中的页面(即登录或查看基本索引(从脚手架视图))时,我都会收到 500 错误。我尝试打开自定义错误,但我得到的只是 500 错误。我试图从我的本地机器上调试它,但这根本没有帮助,因为在本地运行站点并连接天蓝色数据库时一切正常。

我还拉下了 web.config 文件,两边的 web.configs 是相同的。

我认为这与配置问题有关,但我不确定是什么。

是否有可能我必须与 asp.net mvc 5 相关才能使其与 Windows azure 一起使用?看起来 .net 框架在 azure 上正确设置为 .net 4.5。我猜这与 Azure 只是不知道它应该使用 web.config 中提供的数据库这一事实有关。

以下是 web.config 连接字符串:

<add name="DefaultConnection" connectionString="Data Source=####.database.windows.net,1433;Initial Catalog=####_db;Persist Security Info=True;User ID=####;Password=####" providerName="System.Data.SqlClient" />
<add name="DefaultConnectionDeploy" connectionString="Data Source=####.database.windows.net;Initial Catalog=####_db;Persist Security Info=True;User ID=####;Password=####" providerName="System.Data.SqlClient" />
<add name="DefaultConnection_DatabasePublish" connectionString="Data Source=####.database.windows.net,1433;Initial Catalog=####_db;Persist Security Info=True;User ID=####;Password=####" providerName="System.Data.SqlClient" />
4

2 回答 2

0

Windows Azure 使用转换来管理连接字符串。连接字符串在运行时合并,并且可以通过网站管理页面上的配置选项卡进行控制。每当您将 Azure 数据库设置为链接资源时,它会自动使用防火墙规则配置 Azure 数据库服务器以允许来自 Web 服务器的连接,并添加连接字符串。通过使用此连接字符串,将其命名为与开发中使用的字符串相同的名称,无需在部署之前修改任何代码。如果不将 Azure 数据库设置为链接资源,则需要手动修改防火墙规则,这与 Azure 网站的可扩展性不太好,因此不推荐。

于 2013-10-07T01:39:51.327 回答
0

根据 Andrew-counts 的建议,我去检查了我的 EF 迁移(在使用“从服务器替换 web.config”选项拉下 Azure web.config 文件之后,以便我拥有服务器正在使用的确切副本。然后我启用了自定义错误。事实证明,页面加载失败是因为一个错误表明表 dbo.AspNetRoles 已经存在。

尽管表已经存在,但它似乎正在尝试运行 EF 迁移。为了解决这个问题,我决定去清除我当前的数据库(我今天刚刚设置了数据库,所以这样做没有害处)然后,从 Visual Studio 的包控制台,在部署任何东西之前运行 Update-Database 脚本服务器。当我这样做时,它正确地在 dbo.__MigrationHistory 表中添加了记录。然后我签入了我的更改,以便我已连接到我的解决方案的 visualstudio.com 构建将构建并部署到 Azure。问题仍然存在,但我意识到我需要禁用我正在使用的自动构建 + 部署,而是使用右键单击 + 发布,因为从 Visual Studio 构建中执行此操作并没有正确连接到 azure 数据库(它不是 t 转换 web.config)。当我在 Visual Studio 中使用发布时,该网站就像一个魅力。

谢谢你的帮助

于 2013-10-07T04:44:25.513 回答