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