C# 创建文本文件并将其保存到服务器

C# 创建文本文件并将其保存到服务器,c#,asp.net,C#,Asp.net,在ASP.Net中,我想创建一个文本文件并将其保存到服务器。这将通过用户操作每天发生,而不是计划 对于这个问题,我希望该位置不在应用程序路径中,而是在一个单独的文件夹中,假设该文件夹不在根目录下 我是这个网站的新手,如果这个问题太开放,请随时告诉我 感谢您的帮助。以下是一个示例: // Pass a path and filename to the StreamWriter's // constructor. The path must already exist but the // fil

在ASP.Net中,我想创建一个文本文件并将其保存到服务器。这将通过用户操作每天发生,而不是计划

对于这个问题,我希望该位置不在应用程序路径中,而是在一个单独的文件夹中,假设该文件夹不在根目录下

我是这个网站的新手,如果这个问题太开放,请随时告诉我

感谢您的帮助。

以下是一个示例:

// Pass a path and filename to the StreamWriter's
// constructor.  The path must already exist but the
// file will be created if it does not already exist.
using (TextWriter tw = new StreamWriter("c:\\foo\\bar.txt"))
{
    tw.WriteLine("hello world");
}

我认为这样做没有任何具体问题。您只需确保运行ASP.NET的用户被授予写入输出文件夹所需的权限。

您可以使用System.IO类保存到本地文件系统上的文件

using(var w = new StreamWriter(filename))
{
    w.WriteLine("Hello world!");
}

您需要使用Server.MapPath来访问文件夹的物理路径

    using (TextWriter tw = new StreamWriter(Server.MapPath("Folder1")))
    {
        tw.WriteLine("hello world"); 
    }

只是补充一下其他人所说的,当在多线程应用程序中写入文件时,您需要同步对该资源的访问。您可以使用以下方法来实现此目标:

// Make this a static field
ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();

_lock.EnterWriteLock();
try
{
    File.WriteAllText(@"c:\test.txt", "some info to write");
}
finally
{
    _lock.ExitWriteLock();
}

要遵循的一个良好实践是使用web.config应用程序设置键定义应用程序的输出路径

您可以使用ConfigurationManager.AppSettings类从web.config中检索值。您可以在此处阅读如何执行此操作:

我同意。将路径放在web.config中,并确保文件夹的权限正确

另外,请确保路径不在C驱动器上。这样,如果出现问题,或者站点受到攻击,c驱动器将不会填满并使服务器崩溃

小心使用权限;即使是一个简单的文本文件也可能是危险的,如果黑客能够以某种方式破坏路径。例如,考虑有人覆盖服务器的hosts文件