在服务器上创建一个文本文件,它可以被所有客户端c#用户修改

本文关键字:修改 用户 客户端 文件 创建 服务器 文本 一个 | 更新日期: 2023-09-27 18:10:27

我想在服务器上创建一个日志文件,跟踪所有客户端登录的详细信息。我选择了web service path

string p2 = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "ServerLog.txt";
public void log(string logData)
    {
        lock (logLock)
        {
            fs = new FileStream(p2, FileMode.OpenOrCreate, FileAccess.Write);
            m_streamWriter = new StreamWriter(fs);
            m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
            m_streamWriter.WriteLine(" " + logData + "'n");
            m_streamWriter.Flush();
            m_streamWriter.Close();
        }
    }

我在WebService中编写了上面的代码,并通过创建一个服务对象来访问它。我可以修改它。但是,一旦我的系统创建了该文件,并且另一个用户试图修改它,那么错误显示为:

由于内部错误,服务器无法处理请求。要了解有关错误的更多信息,请在服务器上打开IncludeExceptionDetailInFaults(从ServiceBehaviorAttribute或从配置行为)以便将异常信息发送回客户端,或根据Microsoft . net Framework 3.0 SDK文档打开跟踪并检查服务器跟踪日志。

如果服务器上的文件被删除,第二个用户可以继续登录服务器。但是除了第二个人,任何人都可以做日志。

在服务器上创建一个文本文件,它可以被所有客户端c#用户修改

试试这段代码。

using (StreamWriter streamWriter = new StreamWriter(fileName))
{
    streamWriter.WriteLine(" " + logData + "'n");
}

您需要关闭流,也可能使用"追加"模式。文件。AppendText是一个可以满足你需要的方法。

var filename = p2;
using(var streamWriter = File.AppendText(filename))
{
   streamWriter.WriteLine(" " + logData + "'n");
}

边注:有许多现有的日志解决方案-请考虑使用它们,而不是发明自己的…