Kullanıcı oturum açarken ve kullanıcı pencerede oturum açarken nesneyi kaldırması gerektiğinde bir nesne eklemem gereken bir sözlüğe sahibim. Ayrıca xml için sözlüğü serileştiriyorum. C# 'de yeni olduğum gibi windows hizmeti de bazı şüphelerim var.Serialize sözlüğe XML C#
İşte kodum.
public class UserSessionCapturePlugin : IInformServiceHandler
{
public Dictionary<int, UserSessionInfo> UserSessionLookupTable = new Dictionary<int, UserSessionInfo>();
public void OnSessionChange(SessionChangeDescription changeDescription)
{
switch (changeDescription.Reason)
{
//Case of Logon
case SessionChangeReason.SessionLogon:
//CreateRunningProcessesLog("UserSession-SessionLogon");
UserSession userSessionLogin = new UserSession()
{
UserName = MachineHelper.GetUsername(),
UserGuid = MachineHelper.GetUserGuid(),
MachineGuid = MachineHelper.GetMachineGUID(),
LoginTime = DateTime.Now.ToUniversalTime(),
SessionGuid = Guid.NewGuid(), //New Guid generated for tracking the UserSession, this will be created on on logon
IsReadable = false,
SessionId = changeDescription.SessionId,
};
UserSessionInfo userSessionInfoLogin = new UserSessionInfo()
{
UserName = MachineHelper.GetUsername(),
SessionGuid = userSessionLogin.SessionGuid,
IsActiveUser = true,
SessionId = changeDescription.SessionId,
LoginTime = userSessionLogin.LoginTime,
State = RowState.Added,
};
UserSessionLookupTable.Add(userSessionInfoLogin.SessionId, userSessionInfoLogin);
XmlSerializer serializer = new XmlSerializer(typeof(Dictionary<Guid, UserSessionInfo>));
TextWriter textWriter = new StreamWriter(@"UserSessionLookupDictionarySerialized.xml");
serializer.Serialize(textWriter, UserSessionLookupTable);
textWriter.Close();
//Case of Logoff
case SessionChangeReason.SessionLogoff:
UserSession userSessionLogoff = new UserSession()
{
UserName = MachineHelper.GetUsername(),
UserGuid = MachineHelper.GetUserGuid(),
MachineGuid = MachineHelper.GetMachineGUID(),
LogOffTime = DateTime.Now.ToUniversalTime(),
IsReadable = true,
SessionId = changeDescription.SessionId,
};
UserSessionLookupTable.Remove(userSessionLogoff.SessionId);
XmlSerializer serializer = new XmlSerializer(typeof(Dictionary<Guid, UserSessionInfo>));
TextWriter textWriter = new StreamWriter(@"UserSessionLookupDictionarySerialized.xml");
serializer.Serialize(textWriter, UserSessionLookupTable);
textWriter.Close();
break;
}
}
}
Ama bu xml eklenecektir Son giriş kullanıcı veya yeni kullanıcı ek bir giriş ayrıntılarla değiştirilir olacağını edilir birden fazla kullanıcının oturum açıyorsanız aşağıda
şüpheler var ?
kullanıcı bilgilerini de xml kaldırılacaktır gelmez ya da (girdiyi deserializing ve kaldırmak gibi) başka yöntemler gereklidir kapatma iken?
Şu anda bu kodu neden burada gönderiyorum diye kodları ayıklamıyorum veya çalıştıramıyorum. kullanım ömrü ana ömrü ile yani UserSessionLookupTable
olarak
benziyor
sonra mı? –
Özür ... Ben sınıfta başlatılan ama burada –
Benim endişe UserSessionLookupTable' 'yaşam döngüsünü bulmaktır (Sadece burada yöntem yapıştırılan) kodu dahil değil am, o statik veya statik olmayan nedir? ve bir kez mi, birden çok kez mi başlatıldı? –