全部, 我在Web服務器的Web根目錄上有一個〜/ temp目錄。假設: C:\ inetpub \ myapp \ temp.NET Web服務器上的文件系統訪問權限
我在後面的代碼背後的代碼中刪除所有文件的方法。一切運作良好。
protected CleanTemp() {
// clean all the files in tmp dir
Array.Foreach...
}
的問題是,如果我創造我Global.aspx一個計時器,試圖以同樣的方式來執行這種清潔,系統列出了文件的臨時目錄,但他們每個人,它返回一個異常他說,用戶沒有適當的訪問權限:
[Global.aspx]
void Application_Start(object sender, EventArgs e) {
PhisicalTmpFolder = Server.MapPath(~/temp);
// create new timer
System.Timers.Timer timScheduledTask = new System.Timers.Timer();
timScheduledTask.Interval = 20 * 60 * 1000.0;
timScheduledTask.Enabled = true;
timScheduledTask.Elapsed += new System.Timers.ElapsedEventHandler(timScheduledTask_Elapsed);
}
void timScheduledTask_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
// clean all the files in tmp dir
Array.ForEach(
Directory.GetFiles(PhisicalTmpFolder),
delegate(string path) {
try {
File.Delete(path); i++;
} catch (Exception ex) {
if (_logger != null) _logger.Error(ex.Message, ex);
}
}
);
}
我怎麼能告訴它必須與應用程序相同的訪問權限運行計時器?
謝謝你在前進, Gianpiero
因此,如果您從Global.asax調用CleanTemp,它可以工作嗎?如果從一個定時器調用它只是不起作用? –
你的目錄是隱藏的嗎?如果不是,則刪除可能會觸發應用程序的重新啓動。 – TomTom
我剛剛在global.asax中測試(沒有定時器),我收到了同樣的錯誤。所以這不是定時器的問題,但它是用戶運行global.asax的問題。請記住我是託管的,我無法修改網絡服務器上的任何用戶。無論如何通過FTP目錄是可見的777(rwxrwxrwx) –