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

时间:2009-05-28 17:48:20

标签: c# asp.net

在C#ASP.Net中,我想创建一个文本文件并将其保存到服务器。这将每天发生(通过用户操作,未安排)。

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

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

感谢您的协助。

7 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

要遵循的一个好习惯是使用web.config应用设置键来定义应用的输出路径。

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

http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx

答案 2 :(得分:2)

以下是一个例子:

// 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");
}

答案 3 :(得分:2)

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

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

答案 4 :(得分:2)

只是添加其他人所说的内容,在多线程应用程序中写入文件时,需要同步对此资源的访问权限。您可以使用ReaderWriterLockSlim来实现此目的:

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

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