1.访问记录服务
public class PageVisitService
{
private readonly IMemoryCache _memoryCache;
private readonly TimeSpan _timeSpan = TimeSpan.FromHours(1);
public PageVisitService(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
public bool RegisterVisit(string ipAddress)
{
string cacheKey = $"PageVisit_{ipAddress}";
if (_memoryCache.TryGetValue(cacheKey, out _))
{
return false; // 该 IP 在过去一小时已记录,不计数
}
_memoryCache.Set(cacheKey, true, _timeSpan);
return true; // 记录新的访问
}
}
2.在 Program.cs 或 Startup.cs 添加:
builder.Services.AddMemoryCache(); builder.Services.AddSingleton<PageVisitService>();
3.在控制器中调用
public class VisitController : ControllerBase
{
private readonly PageVisitService _pageVisitService;
public VisitController(PageVisitService pageVisitService)
{
_pageVisitService = pageVisitService;
}
[HttpGet]
public IActionResult Visit()
{
string userIp = HttpContext.Connection.RemoteIpAddress?.ToString() ?? "Unknown";
if (_pageVisitService.RegisterVisit(userIp))
{
//保存数据库,持久化操作
//recruitInfo.VisitTimes++;
//recruitDAL.UpdateRecruitInfo(recruitInfo);
//await _mySqlTrainDbContext.SaveChangesAsync();
}
}
}
浙公网安备 33010602011771号