5

我正在尝试创建自定义 Web 部件。为了实现错误处理,我想写入事件日志。为此,我正在尝试使用以下代码;

protected void btnExceptionTester_Click(object sender, EventArgs e)
    {
        try
        {
            throw new Exception("this is a test");
        }
        catch (Exception ex)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                EventLog.WriteEntry("TestWebpart", ex.ToString(), EventLogEntryType.Error);
            });
        }
    }

当我尝试执行此代码时,我收到一个共享点错误页面(未处理的异常)。当我查看事件日志时,我看到以下消息;“不允许请求的注册表访问”。

我在完全信任级别下运行(仅用于测试)。有人可以向我指出我需要什么样的权限才能写入事件日志吗?还是有其他方法?

大受帮助!

4

3 回答 3

8

我没有尝试写入 Windows 事件日志,但作为替代方案,您可以使用以下命令写入 12 配置单元中的 SharePoint 日志:

Microsoft.Office.Server.Diagnostics.PortalLog.LogString("your message here!");

希望这可以帮助

伊恩

于 2009-05-11T21:02:43.893 回答
1

更新

写入事件日志需要在 Web 部件中提升权限:

SPSecurity.RunWithElevatedPrivileges(delegate { EventLog.WriteEntry(...

权限:

HKLM\SYSTEM\CurrentControlSet\Services\Eventlog\ YourWebPartLog

我想是你悲伤的原因。与您的应用程序池的权限相比,它的权限是什么?

于 2009-05-11T21:13:08.447 回答
1

SharePoint 中的事件日志条目:

  1. 对于 WebParts 记录 12 个配置单元中存在的 ULS 日志中的错误。

  2. 对于 SharePoint 应用程序页面,将错误写入事件日志中。

  3. 所有其他列表和库相关错误将仅记录在 ULS 日志中。

谢谢

于 2009-05-12T14:49:46.980 回答