【问题标题】:ASP.NET Universal Providers - Do they automatically provide SQL Azure Retry Logic?ASP.NET 通用提供程序 - 它们是否自动提供 SQL Azure 重试逻辑?
【发布时间】:2012-06-08 09:56:38
【问题描述】:

关于 ASP.NET 通用提供程序 (System.Web.Providers),它们在与 SQL Azure 一起使用时是否自动提供重试逻辑?例如在我的代码中我调用:

Membership.CreateUser

如果由于 Azure 的暂时性错误而失败,库是否会自动处理这种情况并重试操作?还是我应该手动处理异常+重试?

回复逻辑是内置的following question implies,但是有没有我可以确认的地方,比如这些提供者的一些主页或源代码?

【问题讨论】:

    标签: asp.net asp.net-membership membership-provider


    【解决方案1】:

    我看不到它在失败后再次重试的任何地方。 DefaultMembershipProvider 使用简单的实体框架 AddObject,除非您实现 CustomMembershipProvider。

    internal static User CreateUser(MembershipEntities ctx, Guid id, 
       string userName, Guid appId, bool isAnon)
    {
       User user = new User();
       user.UserId = id;
       user.ApplicationId = appId;
       user.LastActivityDate = DateTime.UtcNow;
       user.UserName = userName;
       user.IsAnonymous = isAnon;
       ctx.Users.AddObject(user);
       User user1 = user;
       return user1;
    }
    

    【讨论】:

    • 那么这到底是如何真正“支持”Azure SQL 数据库的呢?我成功地将旧提供程序用于 SQL 数据库 18 个月,除了缺少重试逻辑之外没有任何问题。我在 6 个月前迁移到新的通用提供程序,因为我认为它具有 Azure 的重试逻辑。现在我很困惑为什么要使用它。
    • @BrettRobi 支持 SQL Azure 和重试逻辑是两个不同的问题。 Universal Providers 支持开箱即用的 SQL Azure,而旧的 Membership 提供程序失败了。我同意默认情况下应包含重试逻辑。但是,如果我们想要重试逻辑,我们可能需要在功能请求表单中询问。
    • 我不同意。在您的术语中,旧提供程序“支持”SQL Azure。如果没有重试逻辑,新的对我没有任何好处。 SQL Azure 是“实质上”(使用 Azure 短语)SQL Server,需要重试逻辑是两者之间的核心区别。无论如何,感谢您的评论。
    • @BrettRobi Old Membership Provider 不支持 SQL Azure,因为它使用 aspnet_regsql.exe 创建具有正确架构的数据库。 您必须修改它们才能在 SQL Azure 中托管。 但是,新的通用提供程序使用 Entity Framework Code First 并在您第一次使用它时自动创建数据库. 这是新通用提供者相对于旧提供者的优势之一。 如果您对比较有更多问题,请创建一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2011-10-19
    相关资源
    最近更新 更多