C#ASP.Netでは、テキストファイルを作成してサーバーに保存します。これは毎日行われます(ユーザーアクションによってスケジュールされません)。テキストファイルを作成してサーバーに保存する
私は、アプリケーションのパスではなく、別のフォルダ(この質問の場合、そのフォルダがルートから離れていると言うことができます)に存在しないようにします。
私はこのサイトを初めて利用しています。この質問があまりにも「オープン」であれば、私に教えてください。
ご協力いただきありがとうございます。ここで
C#ASP.Netでは、テキストファイルを作成してサーバーに保存します。これは毎日行われます(ユーザーアクションによってスケジュールされません)。テキストファイルを作成してサーバーに保存する
私は、アプリケーションのパスではなく、別のフォルダ(この質問の場合、そのフォルダがルートから離れていると言うことができます)に存在しないようにします。
私はこのサイトを初めて利用しています。この質問があまりにも「オープン」であれば、私に教えてください。
ご協力いただきありがとうございます。ここで
私はDan Herbertに同意します。 web.configにパスを入れ、フォルダのアクセス権が正しいことを確認します。
また、パスがCドライブにないことを確認してください。そうすれば、何か問題が生じた場合、またはサイトが攻撃された場合、Cドライブがいっぱいになってサーバーがクラッシュすることはありません。
権限には注意してください。単純なテキストファイルでさえ、ハッカーが何らかの形でその道筋をつぶすことができれば危険です。たとえば、サーバーのhostsファイルを上書きする人がいると考えてください。
は一例です:
// 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");
}
マルチスレッドアプリケーションでファイルに書き込むときは、このリソースへのアクセスを同期する必要があります。あなたはこれを達成するために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();
}
一つの良い方法は、アプリケーションの出力パスを定義するためにweb.config
アプリ設定キーを使用することです。
ConfigurationManager.AppSettings
クラスを使用して、web.config
から値を取得します。あなたはここにこれを行う方法を読むことができます:
http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx