C# 创建文本文件并将其保存到服务器
在ASP.Net中,我想创建一个文本文件并将其保存到服务器。这将通过用户操作每天发生,而不是计划 对于这个问题,我希望该位置不在应用程序路径中,而是在一个单独的文件夹中,假设该文件夹不在根目录下 我是这个网站的新手,如果这个问题太开放,请随时告诉我 感谢您的帮助。以下是一个示例: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
// 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文件