此代码在 Kentico 网站中运行良好:
var users = UserInfoProvider.GetUsers();
for (int x = 0; x < users.Count(); x++
{
UserInfo currentUser = users.ElementAt(x);
currentUser.SetValue("AcceptsAlerts", equivalentSubscriber.Status != SubscriberStatus.Unsubscribed);
UserInfoProvider.SetUserInfo(currentUser);
}
当我将代码移至控制台应用程序时,对 UserInfoProvider 的任何调用都会导致错误:“未找到对象类型‘cms.usersettings’”
对于获取用户的初始调用,我可以在控制台应用程序中执行以下操作:
DataSet usersds = new CMS.DataEngine.DataQuery("cms.user.selectall").Execute();
然后使用用户数据循环遍历数据集的 Table1:
UserInfo currentUser = new UserInfo(dtUsers.Rows[x]);
一切都很好并且工作正常,直到我将更新后的用户写回数据库。除了调用之外,我找不到其他写入数据的方法:
UserInfoProvider.SetUserInfo(currentUser);
有谁知道另一种保存用户数据的方法?或解决错误。该错误是运行时错误,据我所知,我已经引用了我需要的所有内容。我正在编辑的字段是添加到 cmsUser 表中的自定义字段。
使用信息语句:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using CMS;
using CMS.CustomTables;
using CMS.DataEngine;
using CMS.Membership;