2013-01-22 60 views
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服務器回收了應用程序池或其他東西,現在系統丟失了連接字符串。

+2

我必須問,爲什麼要編寫一個應用程序運行24小時?這是一個更適合Windows服務,控制檯應用程序或WinForms應用程序的任務。 ASP.NET不是爲這樣的事情設計的,而且你可能會有異常的行爲。 IIS重置,應用程序池重置等等。有太多不可預知的事情需要處理,這不是其他應用程序類型的一個因素。即使在Cassini(Visual Studio Web服務器)而不是IIS中運行,您也可能會遇到長時間運行的問題。 – David

+0

我有點繼承了這一點,並且架構決定已經完成。我們已經在計劃使用完全不同的架構的第2版。但現在我必須盡我所能才能實現這一目標。 –

+0

我希望有人能夠回答你的問題,但我強烈懷疑答案與ASP.NET和固定運行的進程的固有問題有關,唯一的答案是將長期運行的進程分解爲另一個應用程序。幸運的是,將asp.net代碼移植到OCnsole應用程序並不困難,但我希望您找到更簡單的答案。祝你好運! (誠​​懇地說,不是諷刺)。 – David

回答

0

不知道這是否真的是原始問題的答案,但我最終將長時間運行的應用程序的內容分離到Windows服務中託管的WCF服務中。現在我沒有原來的問題了。

相關問題