2013-12-18 130 views
0

我的公司有一個很早以前在ASP.NET中創建的OLD網頁。我從來沒有與ASP.NET合作過,我對數據庫關閉時如何顯示錯誤感到困惑。該網站使用HMTL和asp從文本框獲取信息並將其存儲在數據庫中。連接信息位於web.config文件中。如果數據庫沒有響應,我怎麼會不顯示某個asp頁面,而是顯示一條錯誤消息?如何在SQL Server關閉時顯示錯誤頁面?

任何人都可以引導我正確的道路?

我已經使用了一點PHP,JavaScript,JQuery,MySQL。然而,這對我來說是全新的。

此外,在修改網頁時,這是一個臨時修復程序,但我們必須顯示一些內容,以便客戶端知道它無法正常工作。所以我承受很大的壓力來解決這個問題,而且我很無能。

+0

你使用的是傳統的ASP還是ASP.net。我猜這是.net如果你的連接字符串是在web.config – John

+0

是的可能.NET ...我怎麼能看到它是哪一個? – jlaverde

+0

什麼是您的文件擴展名。 .asp適用於經典,.aspx適用於.net – John

回答

0

在你的母版頁(如果你有一個,否則每一個人網頁)Page_Load方法中,添加...

if(!DatabaseConnectivity.IsDatabaseUp()) 
{ 
    Response.Redirect("~/DatabaseDown.aspx"); 
} 

添加DatabaseConnectivity.cs類的App_Code文件夾中。向這個類中添加一個名爲IsDatabaseUp()的函數。在那個函數中,對你的數據庫做一個簡單的查詢。如果發生異常,您可以假定數據庫已關閉並返回false。

public class DatabaseConnectivity 
{ 
    public static bool IsDatabaseUp() 
    { 
     try 
     { 
     SqlDataSource ds=new SqlDataSource(); 
     ds.ConnectionString=System.Web.Configuration.WebConfigurationManager.ConnectionStrings["MYCONNSTRINGNAME"].ToString(); 
     ds.SelectCommand="select count(*) from sys.Tables"; 
     ds.Select(DataSourceSelectArguments.Empty); 
     return true; 
     } 
     catch(Exception) 
     { 
      return false; 
     } 
    } 
} 

將DatabaseDown.aspx文件添加到網站的根目錄中,並通知網站已關閉。

+0

這看起來很正確,謝謝!你會爲查詢建議一個簡單的選擇語句嗎?如果連接信息在web.config文件中,我該如何連接?比如,什麼是語法的例子? – jlaverde

+0

我不打算知道你正在使用什麼數據庫,所以我不能告訴你這樣做的代碼。但我建議你看看應用程序的其餘部分,看看它是如何處理數據庫交互的,它應該給你一個關於如何獲取連接信息的好主意。 如果它是一個Oracle數據庫,我會使用'select 1 from dual',但是如果它是SQL Server,我會做'select * from sys.Tables'(但我不是常規的SQL服務器用戶,所以可能會有更強大的功能,我不知道) – mason

+0

@jlaverde我在問題標題中看到您使用SQL Server,因此我更新了代碼,向您展示瞭如何執行查詢。請記住,我是少數定期使用代碼背後的SqlDataSource的人之一。 – mason