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); } } }