1

动作方法

public ActionResult Index()
 {
  ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
  LogError("lok", "lok2", "lok3");
  return View();
 }

日志错误方法

private void LogError(string transactionId, string sAmountPaid, string deviceId)
        {
            // Creating the source, which will generate error
            if (!EventLog.SourceExists("MyApplication"))
            {
                //Creating log, where error will be logged
                EventLog.CreateEventSource("MyApplication", "MyLog");
            }

            // Creating object of EventLog to log error
            var myAppLog = new EventLog { Source = "MyApplication" };

            //Writing error to log
            myAppLog.WriteEntry(transactionId + sAmountPaid + deviceId);
        }

当我运行主页时,它总是显示“错误。处理您的请求时发生错误。” .我怀疑这是由于无法在“事件查看器”上创建日志。当我在本地主机上运行上述代码时,它工作正常。但是当我将它发布到 Windows Server 2012 上的 IIS 服务器时,它给出了上述错误。

我的问题:我是否应该启用任何在事件查看器上创建日志的权限。如果是这样,该怎么做?我的 IIS 在 Windows Server 2012 上运行。

4

2 回答 2

3

以前有人问过这个问题。以下链接指向该讨论。

在 Windows Server 2008 IIS7 上的 ASP.NET 中写入事件日志

您需要授予应用程序写入 Windows 事件日志的权限。

但是,由于几个原因,不建议这样做。

  1. 不缩放。
  2. 将攻击向量引入服务器本身,如果您的应用程序未得到适当保护,则可以利用该攻击向量。
  3. 应用程序不能托管在“共享托管”主机解决方案中,您必须有权访问操作系统本身才能授予这些权限(或允许这样做的系统,如 cPanel)

登录 Windows 事件日志的替代方法:

  1. 登录到数据库或文件
  2. 在分布式架构或企业级系统中,将事件日志条目发送到队列系统,队列系统将数据传递到聚合系统。
于 2013-08-02T23:32:13.630 回答
1

您需要管理员权限才能创建事件源,因为名称必须是唯一的,并检查是否需要检查所有注册表项,包括安全性。我怀疑你想给你的 IIS 帐户本地管理员。我们这样做的方式是(对于桌面应用程序),是我们的安装程序创建事件源(作为管理员),然后我们的应用程序只是从中读取写入。

于 2013-08-02T09:11:26.807 回答