2009-12-01 70 views
3

我有一個ASP.Net應用程序.net 3.5 SP1,運行在Win7中。在登錄過程中,ASP.Net登錄控件中的某些內容導致在事件日誌中寫入安全日誌(這聽起來我可以接受)。問題是,它似乎應用程序沒有權限做到這一點。有錯誤是:在Win7上ASP.Net EventLog權限失敗

說明:該應用程序試圖執行安全策略不允許的操作。要授予此應用程序所需的權限,請聯繫您的系統管理員或更改配置文件中的應用程序信任級別。

異常詳細信息:System.Security.SecurityException:請求類型的權限 'System.Diagnostics.EventLogPermission,系統,版本= 2.0.0.0,文化=中性公鑰= b77a5c561934e089' 失敗。

堆棧跟蹤不顯示我的應用程序中的一行代碼,它的所有代碼都在框架中。 最後5行是: System.Security.CodeAccessSecurityEngine.Check(對象的需求,StackCrawlMark & stackMark,布爾isPermSet)0 System.Security.CodeAccessPermission.Demand()61 System.Diagnostics.EventLog..ctor(字符串logName,字符串machineName,字符串源)+125 System.Diagnostics.EventLog..ctor()+24 System.Diagnostics.EventLog.WriteEntry(String source,String message,EventLogEntryType type,Int32 eventID,Int16 category,Byte [ ] rawData)+52

這個相同的應用程序在XP SP2上工作正常。我在周圍獵殺,無法找到如何給予權限。我已經嘗試將Hte應用程序池作爲LocalSystem和ApplicationPoolIdentity運行。

什麼是最簡單的方法來運行?它是我的本地開發機器,我不在乎是否打開安全漏洞,只要我不需要修改代碼(即我需要的解決方案是INETMGR更改或web.config或某些本地權限等)。

謝謝!

回答

2

link似乎在討論您遇到的問題。 我不確定XP與win 7的默認CAS(代碼訪問安全性)之間的差異,但是寫入事件日誌(以及所有調用程序集)的程序集必須具有EventLogPermission。

您可以添加AllowPartiallyTrustedCallers屬性或使用strong name key對程序集簽名。

0

如果您正在寫入默認的應用程序日誌,則需要先在LocalSystem中提供權限,然後再在應用程序池中使用它。 打開RegistryEdit和GOTO

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\eventlog\Application 

右擊在Applicatuion,然後單擊權限

enter image description here

如果用戶(LOCALSYSTEM)沒有出現在列表中,則添加允許完全控制