我有横切项目,可以在aplicattion的任何地方访问 这样的事情。
//Domain\username
public static string GetLoggedUserName()
{
return Thread.CurrentPrincipal.Identity.Name.Split('\\')[1];
}
当我需要清理缓存(更新,删除等)时,我会这样做。
private IMethodReturn ApplyCleanCacheHandler(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
var methodClass = input.MethodBase.DeclaringType.Name;
var sessionUserName = SomeSessionClass.GetLoggedUserName();
var cacheKeysToClean = GlobalCachingProvider.GetAllCacheKeys()
.Where(x => x.Contains(methodClass) &&
(x.Contains(GlobalCachingProvider.commonCacheUser) ||
x.Contains(sessionUserName))).ToList();
cacheKeysToClean.ForEach(key => GlobalCachingProvider.RemoveItem(key));
// Original target invoking.
return getNext()(input, getNext);
}
无论如何要做得更好,我不知道在一个应用程序的任何地方是否可以访问用户名。