我有一个运行Windows azure的站点,我通过链接资源连接了数据库,看起来该站点应该使用数据库。我还在我的web.config文件中包含了正确的连接字符串。
当我在本地运行网站并使用azure数据库的连接字符串作为默认连接时,一切正常,我看到从本地计算机更新数据会反映在远程数据库中。
每当我尝试访问任何使数据库命中的页面(即登录或查看基本索引(来自脚手架视图))时,我都会收到500错误。我尝试打开自定义错误,但500错误就是我得到的。我试图从我的本地计算机上调试它,但这根本没有帮助,因为在本地运行站点并连接到azure数据库时一切正常。
我还下载了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" />
答案 0 :(得分:0)
Windows Azure使用转换来管理连接字符串。连接字符串在运行时合并,可以从“网站管理”页面上的“配置”选项卡进行控制。无论何时将Azure数据库设置为链接资源,它都会自动使用防火墙规则配置Azure数据库服务器以允许从Web服务器进行连接,并添加连接字符串。通过使用此连接字符串,将其命名为与开发中使用的字符串相同,不必在部署之前修改任何代码。如果未将Azure数据库设置为链接资源,则必须手动修改防火墙规则,这与Azure网站的可伸缩性不相符,因此不建议这样做。
答案 1 :(得分:0)
根据Andrew-counts的建议,我去检查了我的EF迁移(在使用“从服务器替换web.config”选项下拉Azure web.config文件之后,我得到了服务器的确切副本我正在使用。然后我启用了自定义错误。事实证明,由于表明dbo.AspNetRoles表已经存在的错误,页面无法加载。
尽管表格已经存在,但似乎它正在尝试运行EF迁移。为了解决这个问题,我决定去掉我当前的数据库(我今天刚刚设置了数据库,这样做没什么坏处)然后,从visual studio的包控制台中运行Update-Database脚本,然后再将任何内容部署到服务器。当我这样做时,它正确添加了dbo .__ MigrationHistory表中的记录。然后我检查了我的更改,以便我连接到我的解决方案的visualstudio.com构建将构建并部署到Azure。问题仍然存在,但我意识到我需要禁用我正在使用的自动构建+部署,而是使用右键单击+发布,因为从visual studio构建中执行此操作并未正确连接到azure数据库(它没有改变web.config)。当我在visual studio中使用发布时,该网站就像一个魅力。
感谢您的帮助