Каждый день открывайте или создавайте текстовый файл в 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 и т. Д.

Если вы не хотите использовать какой-либо из этих инструментов, то, возможно, вам следует подумать о том, чтобы сделать функции ведения журнала и ссылку на открытый файл статическими. Таким образом, они будут обмениваться информацией через вызовы страницы.

Другие вопросы по тегам