azure - 命名架构在 Azure SQL 中不起作用

标签 azure asp.net-mvc-4 schema azure-sql-database simplemembership

我想在 Azure 网站应用程序中使用单独的/命名的架构,通过 Azure SQL 在单独的架构模式中实现 Multi-Tenancy 。我的应用程序在 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 应用程序模板使用 .NET Framework 4.5 创建了一个新的 MVC4 应用程序,该模板当然实现了简单成员资格提供程序。我打开 Azure 控制台并使用新数据库创建了一个新网站,然后将应用程序发布到 Azure。我运行该应用程序并单击“注册”链接来添加第一个用户。这是成功的,我能够注销、登录等。

然后,我通过创建新的命名架构、登录名和用户来修改 PoC 应用的 Azure SQL 配置。我在新数据库中为新用户添加了 db_owner 角色。我更改了用户的默认架构,并将首次运行创建的表转移到命名架构中。我确认用户的默认架构是正确的,并且表位于指定架构中。我在“发布”对话框的“连接字符串”部分更改了用户名和密码,并再次从 Visual Studio 发布了应用程序。我在 Chrome 中打开该网站并单击“注册”链接。我输入了用户名和密码,但收到错误消息“对象名称‘UserProfile’无效”。当尝试使用第一次运行中创建的用户登录时,我遇到了同样的错误。

我正在寻找有关下一步要检查的内容的想法。我可以解决这个问题,但如果我错过了任何简单的事情,我宁愿以有效的方式解决问题。有什么想法吗?

最佳答案

我似乎在 Azure 网站中发现了一个错误,该错误导致连接字符串无法通过发布网站进行更新。

Azure 管理门户的网站配置页面上有一个连接字符串。该连接字符串用于连接到网站的数据库。它最初包含用于创建数据库的用户 ID 和密码。在 Visual Studio 网站项目(在 Web.config 或“发布 Web”对话框中)输入不同的用户 ID 和密码不会影响 Azure 中的连接字符串。这在我的特定情况下造成了问题,但对于不使用类似 sa 的服务器级用户从网站访问数据库的任何人来说,这也会是一个问题。

我找到的解决此问题的方法是直接在网站的“配置”页面上修改 Azure 中的连接字符串,而不是依赖于 Visual Studio 项目中更改的有效性。这解决了问题,现在命名架构可以正常工作。

关于azure - 命名架构在 Azure SQL 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612717/

相关文章:

ruby-on-rails - 如何使用基于多模式的应用程序 Rails 设置延迟作业。?

azure - 如何在 Azure Devops 中的工作项的描述部分中创建本地文件链接?

c# - 将文件流式传输到 Azure Blob 存储?

azure - 从 Azure EventHub 填充 Azure CosmosDb

c# - 如何在 asp.net mvc4 中制作具有通用参数的通用基础 Controller

NHibernate SchemaUpdate 再次添加现有外键?

mongodb - 我应该如何构建 MongoDB 的数据模式?

azure - 如何更新和重新部署 ARM 模板

c# - 如何使用 PartialView 在 ASP.Net MVC 的 webgrid 中绑定(bind)数据

c# - 模型在 MVC4 中没有 ListBoxFor 的值