asp.net-mvc - 通用成员(member)提供商造成用户性能问题

标签 asp.net-mvc azure azure-sql-database membership-provider universal-provider

遗憾的是,我在 Azure 托管、MVC 3、SQL Azure 支持的开发中使用最新的通用提供程序进行成员资格管理。我编写了一个例程,用于从 CSV 文件批量创建用户。解析文件并填充模型。然后,我迭代创建用户的集合。

花费大量时间的关键行是标准

Membership.CreateUser(
   model.UserName, 
   model.Password, 
   model.Email, 
   null, 
   null, 
   model.IsApproved,
   out createStatus);

即使在“大型”4 核服务器上,这一行也可能需要近 1 秒才能完成。这意味着 10,000 个用户将需要近 3 个小时。如果可以的话,直接访问数据库可能需要几分钟。

更糟糕的是我还需要检查现有用户并更新他们(如果有)。我已经放入了必要的索引,数据库速度非常快。坦率地说,这个提供商能做什么?

我做错了什么,还是这个提供程序对于大型系统完全没有用?其他人也遇到过这些问题吗?

我什至不会进入配置文件提供程序,足以说我已经编写了自己的配置文件提供程序!

最佳答案

虽然我之前没有使用过该提供程序,但关键是同时创建多个用户。每个用户 1 秒是合理的。而且,大部分时间都花在等待数据库返回上。当当前线程等待数据库返回时,我建议您创建一个新线程来开始创建另一个用户。所以不要在普通的foreach循环中一一创建用户,请使用Parallel.ForEach,它会自动并行创建用户,可以引用http://msdn.microsoft.com/en-us/library/dd460720.aspx获取示例。

最诚挚的问候,

徐明。

关于asp.net-mvc - 通用成员(member)提供商造成用户性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220275/

相关文章:

sql-server - 如何在 T-SQL/SQL Server 中模拟超/子类型(继承)实体的 BEFORE INSERT 触发器?

asp.net-mvc - 如何将 ASP.NET MVC View 呈现为字符串?

javascript - 我只需要使用 JQuery 的 Live 绑定(bind)到我的元素一次

c# - 用于 ASP.NET MVC 的 Visual Studio 模板导出

azure - 如何使用 Azure Active Directory 将简单例份验证添加到 azure 移动/Web 应用程序?

sql-server - 在哪里可以找到 Azure SQL 数据库备份?

c# - 如何在局部 View MVC.Core 中使用 @section 脚本

azure - Azure 移动服务和 Xamarin Azure 组件中的空间索引

powershell - 压缩 Azure Blob 存储中已有的图像

azure-sql-database - 如何从构建命令为 sqlproj 定位 azure v12 数据库