1
我正在構建一個使用Microsoft SQL Server CE的ASP.NET應用程序,它需要一次運行一個進程24小時。昨天我開始了通宵測試。在大約凌晨2點30分,它拋出以下例外:ASP.NET - 爲什麼數據庫文件突然無法找到?
無法找到數據庫文件。檢查數據庫的路徑。 [Data Source =]
這是運行的代碼片段。這是我使用的數據訪問的助手庫:
public class DataHelper
{
private string _connectionString = ConfigurationManager.ConnectionStrings["myConnString"].ConnectionString;
public void ExecuteNonQuery(string SQL)
{
using (SqlCeConnection _conn = new SqlCeConnection(_connectionString))
{
_conn.Open();
using(SqlCeCommand _cmd = new SqlCeCommand(SQL, _conn))
{
_cmd.ExecuteNonQuery();
}
}
}
}
然後,我有這個在我的web.config
<configuration>
<connectionStrings>
<add name="myConnString" connectionString="data source=|DataDirectory|\myDB.sdf"/>
</connectionStrings>
對於我的測試我正在使用Visual ASP.NET應用程序Studio開發Web服務器(不是IIS)。該應用程序超過12小時運行良好。然後突然它拋出上述異常。任何想法爲什麼突然間它將無法找到數據庫?我的第一個想法是VS開發Web服務器回收了應用程序池或其他東西,現在系統丟失了連接字符串。
我必須問,爲什麼要編寫一個應用程序運行24小時?這是一個更適合Windows服務,控制檯應用程序或WinForms應用程序的任務。 ASP.NET不是爲這樣的事情設計的,而且你可能會有異常的行爲。 IIS重置,應用程序池重置等等。有太多不可預知的事情需要處理,這不是其他應用程序類型的一個因素。即使在Cassini(Visual Studio Web服務器)而不是IIS中運行,您也可能會遇到長時間運行的問題。 – David
我有點繼承了這一點,並且架構決定已經完成。我們已經在計劃使用完全不同的架構的第2版。但現在我必須盡我所能才能實現這一目標。 –
我希望有人能夠回答你的問題,但我強烈懷疑答案與ASP.NET和固定運行的進程的固有問題有關,唯一的答案是將長期運行的進程分解爲另一個應用程序。幸運的是,將asp.net代碼移植到OCnsole應用程序並不困難,但我希望您找到更簡單的答案。祝你好運! (誠懇地說,不是諷刺)。 – David