[英]StreamWriter in server file is in use, but in local works
我有一个webservices的项目。 我正在尝试使用StreamWriter为每种方法编写日志,在本地计算机上一切正常。
像这样:
static StreamWriter sw;
try{
if (File.Exists(Directorio + FILE_NAME))
{
sw = File.AppendText(Directorio + FILE_NAME);
}
else
{
sw = File.CreateText(Directorio + FILE_NAME);
sw.WriteLine("---LOG ");
}
sw.WriteLine(Date);
sw.WriteLine(Header);
sw.WriteLine();
sw.Close();//*/
}catch(Exception){}
但是,当上载到服务器时,有时会由于文件正在使用而引发无法写入的错误。 但是我每次都关闭它,我认为使用try catch应该忽略该部分并继续使用该方法,因为我不想影响每种方法的过程。
我知道这是很少的信息,在这里我无法重现我的问题,但希望有人遇到这样的错误可以给我提示。
Web服务器通常一次处理多个请求。 偶然的错误最有可能是由于一个请求尝试记录而另一个请求已经记录但尚未完成。
如果希望使用自己的日志记录框架,则需要协调对文件的写入。
您还可以使用一种特殊的开源日志记录框架,例如NLog 。
这可能是由于向Web服务器发送了多个请求,一个请求试图写入此日志文件,而另一个请求试图打开。 可能的解决方法是线程同步,因为它会大大降低Web服务的性能,所以效果不是很好。 另外,我建议使用nLog( http://nlog-project.org/ ),它可以在多个项目中使用而不会出现任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.