Каждый день открывайте или создавайте текстовый файл в Application_Start и добавляйте с запрошенными веб-страницами, затем закрывайте в Application_End
Мне было поручено провести простой аудит, который будет записывать каждую страницу, запрошенную любым пользователем, и сохранять данные страницы, а также доступ или отказ в доступе на основании существующего ограничения безопасности.
Я имею в виду открытие текстового файла в Application_Start, а не каждую активную сессию, пытающуюся записать в файл, который может быть потенциально открыт любым пользователем в любой заданной точке. Да, я знаю проблему с этим. В идеале мне нужен хороший подход или некоторая помощь в том, как я подхожу к своему решению.
У нас есть собственный класс, который проверяет, имеет ли текущий контекст доступ к странице из их сеанса. Я хочу использовать этот класс для передачи запрашиваемой информации о странице и результата успешного / отклоненного запроса. Проблема в том, что я не очень опытный, и мне нужно многому научиться.
Я рассматриваю что-то вроде;
if (File.Exists(@"\\MyServer\ICT\EFOSMS_AUDIT\" + DateTime.Today + ".txt"))
{
StreamReader read = new StreamReader(@"\\MyServer\ICT\EFOSMS_AUDIT\" + DateTime.Today);
}
else
{
File.OpenWrite(@"\\MyServer\ICT\EFOSMS_AUDIT\" + DateTime.Today);
}
Просто откройте файл и держите его открытым в течение всего времени работы приложения.
Затем в указанном классе некоторый существующий код проверяет группы AD;
CustomPrincipal principal = HttpContext.Current.User as CustomPrincipal;
if (!principal.IsInAnyRoles(roles))
{
Page.Response.Redirect("~/fos/AccessDenied.aspx");
//Write to file that is open at application level here??
return;
}
Я знаю в своей голове, что я пытаюсь достичь, но не до конца понимаю, если это лучший способ сделать это. Я не уверен, есть ли какие-либо существующие классы, чтобы облегчить это. Я работаю с StreamReader, StreamWriter, File.Exists, File.Open.
Может кто-то подтолкнуть в правильном направлении.
Спасибо
1 ответ
То, что вы пытаетесь достичь, очень похоже на ведение журнала. Есть несколько библиотек, которые позволят вам писать в текстовые файлы, Log4Net, Nlog и т. Д.
Если вы не хотите использовать какой-либо из этих инструментов, то, возможно, вам следует подумать о том, чтобы сделать функции ведения журнала и ссылку на открытый файл статическими. Таким образом, они будут обмениваться информацией через вызовы страницы.