该进程无法访问文件“C:\inetpub\wwwroot\MyApp\5-23-2011.log”因为它正在被另一个进程使用

发布于 2024-11-09 01:56:56 字数 419 浏览 0 评论 0原文

我有一个在 ASP.NET 应用程序中使用的单例记录器。有时我会在这一行收到 进程无法访问文件 错误:

StreamWriter sw = new StreamWriter("Path to log file", true);

我通过 Process Explorerw3wp.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不是你的备胎 2024-11-16 01:56:56

不要多次打开日志文件;只需在应用程序启动时打开它,在退出时关闭它(并经常刷新它)。多次打开和关闭效率很低。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文