0

我的任务是运行一个简单的审核,该审核将记录任何用户请求的每个页面并存储页面的数据以及是否根据现有的安全调整授予或拒绝访问。

我正在考虑在 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。

有人可以朝正确的方向轻推。

谢谢

4

1 回答 1

4

您要实现的目标与日志记录非常相似。有几个库可以让您写入文本文件,Log4Net、Nlog 等。

如果您不想使用这些工具中的任何一个,那么也许您应该考虑将日志记录功能和对打开文件的引用设为静态。这样,他们将在页面调用之间共享信息。

于 2012-11-29T14:48:57.433 回答