我已經基於System.Diagnostics實現了跟蹤。System.Diagnostics:如何使用身份登錄
我也使用System.Diagnostics.TextWriterTraceListener,並將整個跟蹤連接到MOSS 2007 Web應用程序。
由於某種原因,跟蹤試圖(一)創建日誌文件,和/或(b)寫入使用當前瀏覽SharePoint網站用戶日誌文件,有沒有什麼辦法來配置日誌記錄使用特定的用戶帳戶呢?
我已經基於System.Diagnostics實現了跟蹤。System.Diagnostics:如何使用身份登錄
我也使用System.Diagnostics.TextWriterTraceListener,並將整個跟蹤連接到MOSS 2007 Web應用程序。
由於某種原因,跟蹤試圖(一)創建日誌文件,和/或(b)寫入使用當前瀏覽SharePoint網站用戶日誌文件,有沒有什麼辦法來配置日誌記錄使用特定的用戶帳戶呢?
顯然MOSS配置爲使用Windows身份驗證(Kerberos的)和imersonation。如果您不需要模擬登錄到苔蘚中的當前用戶,請關閉模擬(它在web.config中)。您會發現日誌文件將由您的苔蘚安裝的應用程序池在其下運行的用戶創建和寫入。
如果您必須使用模擬,則另一種解決方案是爲每個人提供在日誌目錄(並且僅在日誌目錄中)創建和寫入文件的權利。然而,這並不是最好的想法。您可以禁止每個人的讀取權限,但那些需要讀取日誌的權限,但您仍然不得不擔心試圖通過填充磁盤來拒絕您的人。
第三種選擇是在您登錄之前切換身份。像這樣的東西可能會奏效:
var wic = WindowsIdentity.Impersonate(IntPtr.Zero); // "revert to self"
/* LOG GOES HERE K */
wic.Undo(); // return to impersonation
重要的提醒:我剛學這個東西我自己,所以上面的代碼可能無法在所有工作。如果確實如此,那麼它的甜蜜,因爲你不必登錄你的日誌寫入標識,這也意味着你不需要創建該用戶並在你的應用程序中以明文存儲他們的密碼。
我想知道ol'Skeeter在哪裏? Windows安全性需要一些繁重的工作;我剛剛開始與酒吧現在...
請不要告訴我,這是必要的 - http://www.15seconds.com/Issue/040511.htm?voteresult=5
它不是,但其中一種方法做到這一點 – Will 2008-12-08 14:54:11
喜歡你的答案很多,我認爲模仿必須留下,因爲這是MOSS檢查內部授權的方式來清除相關內容(列表,文檔,頁面等),但看起來我需要編寫一個ExecuteWithElevatedPrivileges函數。 – 2008-12-08 19:33:56