我已经基于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