Когда-то у нас было похожее требование, когда нам нужно было регистрировать время последнего посещения всех пользователей сайта.Таким образом, через некоторое время, например, через 90 дней, если конкретный пользователь не вошел на сайт, администратор может удалить его профиль.
Мы преодолели эту проблему очень простым подходом.Вы можете воспользоваться примером кода для справки.
Вам потребуется создать список на своем сайте с именем «UserLoginDetails» и создать в нем столбец «LastLogIn».Код не требует пояснений.
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Xml.Serialization;
using Microsoft.SharePoint;
namespace Ubaid.WebParts
{
[Guid("883a77d6-271d-4b88-9ca2-d5150a00520b")]
[DefaultProperty("Text"), ToolboxData("<{0}:UserLastVisited runat=server></{0}:UserLastVisited>"), XmlRoot(Namespace = "Ubaid.WebParts")]
public class UserLastVisited : System.Web.UI.WebControls.WebParts.WebPart
{
protected override void CreateChildControls()
{
base.CreateChildControls();
string siteName = SPContext.Current.Web.Url;
using (SPSite site = new SPSite(siteName))
{
SPWeb web = site.OpenWeb();
site.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
SPList UserLoginDetailsList = web.Lists["UserLoginDetails"];
SPQuery query = new SPQuery();
string uname = SPContext.Current.Web.CurrentUser.LoginName;
query.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>" + uname + "</Value></Eq></Where>";
SPListItemCollection listItemColl = UserLoginDetailsList.GetItems(query);
if (listItemColl.Count > 0)
{
SPListItem item = listItemColl[0];
item["LastLogIn"] = DateTime.Now.ToLocalTime();
item.Update();
}
else
{
SPListItem item = UserLoginDetailsList.Items.Add();
item["Title"] = uname;
item["LastLogIn"] = DateTime.Now.ToLocalTime();
item.Update();
}
}
}
}
}
Вы можете вставить эту веб-часть на свою главную страницу, так как данные в этом списке необходимо обновлять при каждой загрузке страницы.
Не уверен, что это лучший способ сделать это / проблемы с производительностью, но поскольку наш сайт был небольшим, мы могли справиться с этим довольно хорошо.