该进程无法访问文件“C:\inetpub\wwwroot\MyApp\5-23-2011.log”因为它正在被另一个进程使用
我有一个在 ASP.NET 应用程序中使用的单例记录器。有时我会在这一行收到 进程无法访问文件
错误:
StreamWriter sw = new StreamWriter("Path to log file", true);
我通过 Process Explorer
和 w3wp.exe
拥有该句柄,因此看来来自同一进程的不同线程导致了问题。
我在上面的代码周围使用了lock
,但仍然收到错误。 如何确保所有线程都可以安全地使用同一个流?
I have a singleton logger which is used inside an ASP.NET application. Sometimes I get The process cannot access the file
error on this line:
StreamWriter sw = new StreamWriter("Path to log file", true);
I checked file handle by Process Explorer
and w3wp.exe
owns the handle so it seems different threads from the same process caused the problem.
I have used a lock
around the above code, but still I get the error.
How can I make sure all threads can use the same stream safely?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不要多次打开日志文件;只需在应用程序启动时打开它,在退出时关闭它(并经常刷新它)。多次打开和关闭效率很低。
Don't open the log file more than once; just open it when the application starts, close it at exit (and flush it often.) Opening and closing more than once is just inefficient.