无法打开源的日志' Microsoft.Practices.EnterpriseLibrary.Data'。读/写事件日志时,您可能没有写访问权限

时间:2014-07-01 08:22:56

标签: exception-handling sharepoint-2013 event-log windows-server-2012 securityexception

我正在使用SharePoint 2013网站,我有两种注册方式:( Win身份验证和FBA) 我正在尝试使用旧门户网站(SP 2010)中的解决方案(WSP),此WSP使用名为' Microsoft.Practices.EnterpriseLibrary.Data '的dll在SP 2013环境中不存在。

因此,要解决我从Microsoft安装 Microsoft Enterprise Library 5.0 ,然后我将此dll复制到inetpub \ wwwroot \ wss \ VirtualDirectories \ 80 \

下的bin文件夹

现在,当我使用Windows身份验证模式登录网站时,WebPart会出现,但当以FBA用户身份登录时,会出现错误:

System.InvalidOperationException: Cannot open log for source 'Microsoft.Practices.EnterpriseLibrary.Data'. You may not have write access. ---> System.ComponentModel.Win32Exception: Access is denied
   --- End of inner exception stack trace ---
   at System.Diagnostics.EventLogInternal.OpenForWrite(String currentMachineName)
   at System.Diagnostics.EventLogInternal.InternalWriteEvent(UInt32 eventID, UInt16 category, EventLogEntryType type, String[] strings, Byte[] rawData, String currentMachineName)
   at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
   at System.Diagnostics.EventLog.WriteEntry(String source, String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
   at System.Diagnostics.EventLog.WriteEntry(String source, String message, EventLogEntryType type)
   at ProjectName.Internet.EventViewerLogService.LogEvent(String source, String message, EventLogEntryType type)
   at ProjectName.Internet.ExceptionHandler.Handle(Exception exception)
   at ProjectName.Internet.SQLHelper.GetVolunteerInfo(String VolunteerId)
   at ProjectName.Internet.Profiles.Volunteer.GetVolunteer(String VolunteerId)
   at ProjectName.Internet.Accessibility.Accessibility.AccessibilityUserControl.Page_Load(Object sender, EventArgs e)


注意:我试图将“安全”权限授予注册表HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Security到“Authenticated Users”组,因为我在开始时遇到错误 错误:找不到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性。

PS:这是对此的跟进。我按照给出的答案但没有用。

我想这是由于服务器上的一些配置问题?

1 个答案:

答案 0 :(得分:2)

该错误与权限问题有关,当我使用FBA用户登录时,我错过了写入新事件来源的权限。

默认情况下,任何经过身份验证的用户都可以写入应用程序事件日志。但是,只有管理员才能创建新的事件源。

我通过使用提升的权限运行CreateEventSource方法来解决它,如下所示:

SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                if (!EventLog.SourceExists(eSource))
                {
                    EventLog.CreateEventSource(eSource, eLog);
                }
                EventLog.WriteEntry(eSource, ex.ToString(), EventLogEntryType.Error);
            });