【发布时间】:2013-01-30 20:07:09
【问题描述】:
我想在 Azure 网站应用程序中使用单独/命名的架构,以使用 Azure SQL 在单独架构模式中实现多租户。我的应用程序在 Visual Studio 中运行正常,但在 Azure 上运行不正常。我在 StackOverflow 上搜索了类似的问题,发现: 这个答案表明它无法完成:Multi-tenant application on Windows Azure。此问题不适用于命名模式:Azure SQL database working when ran locally but not when published to Azure。
对于我正在开发的 MVC4 应用程序,我将 Azure SQL 数据库配置为使用命名架构并修改了连接字符串登录名和密码。当我尝试注册第一个用户时,它从 Azure SQL 抛出错误消息“无效的对象名称'UserProfile'”。我检查了堆栈跟踪,一切看起来都很合理,因此我查看了 SimpleMembershipProvider 的代码,并没有看到使用命名模式时应该中断的任何内容。
作为概念证明,我打开 Visual Studio 2012 并使用 Internet 应用程序模板创建了一个新的 MVC4 应用程序,该应用程序使用 .NET Framework 4.5,它当然实现了简单成员资格提供程序。我打开 Azure 控制台并使用新数据库创建了一个新网站,然后将应用程序发布到 Azure。我运行应用程序并单击注册链接以添加第一个用户。这很成功,我可以注销、登录等。
然后,我通过创建新的命名架构、登录名和用户来修改 PoC 应用的 Azure SQL 配置。我在新数据库中为新用户添加了 db_owner 角色。我更改了用户的默认模式并将初始运行创建的表转移到命名模式中。我确认用户的默认模式是正确的,并且表在命名模式中。我在“发布”对话框的“连接字符串”部分更改了用户名和密码,并再次从 Visual Studio 发布了应用程序。我在 Chrome 中打开了该网站,然后单击了注册链接。我输入了用户名和密码并收到错误消息“无效的对象名称'UserProfile'”。尝试使用第一次运行时创建的用户登录时,我遇到了同样的错误。
我正在寻找有关下一步检查内容的想法。我可以解决这个问题,但如果我错过了任何简单的事情,我宁愿以有效的方式解决问题。有什么想法吗?
【问题讨论】:
-
您在配置文件中使用的连接字符串是什么?
-
在项目的 Web.Release.config 中,我有来自数据库页面中 Azure 控制台“显示连接字符串”链接的 ADO.NET 连接字符串。
标签: azure asp.net-mvc-4 schema azure-sql-database simplemembership