2011-02-14 34 views

回答

0

我一直沒能找到很多沒有第三方工具。我們的團隊正在考慮收購DocAve AvePoint

與此同時,您至少可以在網站設置儀表板的網站分析區域中看到一個想法,以查看有多少人遇到了/_layouts/accessdenied.aspx頁面。它不會告訴你很多,但也許你可以找到一種方法來定製和添加一段代碼,當用戶打到該頁面時會收到用戶的ID。它不是完美的,所以我會建議一個第三方工具,除非你可以掃描所有的Web前端等

0

我們有一個類似的需求一次,我們需要記錄所有用戶上次訪問的時間網站。因此,經過一段時間後,如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(); 
      } 
     } 
    } 
} 

}

你可以在你的母版插入此Web部件,如需要在每個頁面加載要更新這個列表中的數據。

不知道哪個是最好的方式來做它/性能問題,但因爲我們是一個小型網站,我們可以用這個很好的管理。