private string CreateSPFBAUser(string username)
        {
            using (new SPMonitoredScope(string.Concat("Weixin.CreateSPFBAUser(", username, ")"), 5000))
            {
                MembershipUser user = Utils.BaseMembershipProvider().GetUser(username, false);

                try
                {
                    if (user == null)
                    {
                        // get site reference
                        string provider = Utils.GetMembershipProvider(SPContext.Current.Site);

                        // create FBA database user
                        MembershipCreateStatus createStatus;

                        user = Utils.BaseMembershipProvider().CreateUser(username, MyCustomMessageHandler.SecretGuid, null, null, null, true, null, out createStatus);

                        if (createStatus != MembershipCreateStatus.Success)
                        {
                            MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.Unexpected, string.Concat("Failed To create SPFBAUser:"******", CreateStatus:", createStatus.ToString()));
                            return((new ExceptionCreateSPFBAUser(username)).Message);
                        }

                        if (user == null)
                        {
                            MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.Unexpected, string.Concat("Failed To create SPFBAUser:"******", Error Unknown."));
                            return((new ExceptionCreateSPFBAUser(username)).Message);
                        }

                        Utils.BaseRoleProvider().AddUsersToRoles(new string[] { user.UserName }, new string[] { "WeChat", weixinHttpHandler.WeChatPublicAccountNameAndFBARole });
                        //测试结果重复加会报错
                    }
                    else
                    {
                        Utils.BaseRoleProvider().AddUserToRolesIfNotInYet(user.UserName, (new List <string>()
                        {
                            "WeChat", weixinHttpHandler.WeChatPublicAccountNameAndFBARole
                        }));
                        MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.High, string.Concat("SPFBAUser:"******", alreay exists in membership database"));
                    }

                    user.Comment = OneTimeDynamicPassword(user.UserName);
                    Utils.BaseMembershipProvider().UpdateUser(user);

                    Guid   siteid           = SPContext.Current.Site.ID;
                    Guid   webid            = SPContext.Current.Web.ID;
                    SPUser currentWeixinFBA = null;

                    SPSecurity.RunWithElevatedPrivileges(delegate()
                    {
                        using (SPSite site = new SPSite(siteid))
                        {
                            using (SPWeb web = site.OpenWeb(webid))
                            {
                                currentWeixinFBA = web.EnsureUser(string.Concat("i:0#.f|fbamember|", username));

                                //WeChatUser u = new WeChatUser(currentWeixinFBA);

                                //TODO: 把库Title的获取变成SiteProperty,可以为不同的公众号Override,另外加上中英文Title测试,貌似中文状态用英文获取不了。
                                SPHelper.EnsurePersonalFolder(web, web.Lists["图片库"].DefaultViewUrl, SPFBAUserName);
                                SPHelper.EnsurePersonalFolder(web, web.Lists["文档库"].DefaultViewUrl, SPFBAUserName);
                            }
                        }
                    });


                    MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.High, string.Concat("SPFBAUser:"******", created successfully."));
                    return(GetWelcomeInfo(new CultureInfo("zh-CN")));
                }
                catch (Exception ex)
                {
                    MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.Unexpected, ex.Message);
                    MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.Weixin, Microsoft.SharePoint.Administration.TraceSeverity.Unexpected, ex.StackTrace);
                    return((new ExceptionCreateSPFBAUser(username)).Message);
                }
            }
        }