2012年8月30日 星期四

【ASP】網頁更改web.config設定


讀取WebConfig AppSettings
   
   using System.Web.Configuration; //先Using

   WebConfigurationManager.AppSettings["Connection"]


改AppSetting
  Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
  myConfiguration.AppSettings.Settings["DSN"].Value = "abc"; //給你要設定的值
  myConfiguration.Save();

建議先用FileStream去讀取webConfig檔案,判斷是否可以讀寫,避免當掉。

2012年8月23日 星期四

【ASP】利用Global來達成固定時間就產生一次報表


客戶有個需求,需要每5分鐘、每一天、每一個月固定時間就產生特定的報表。

必須全自動化,所以不可能是透過人工登入到ASP網站後按XXX按鈕來產生報表,要解決這個問題就必須利用 Global.asax,只要IIS是啟動的情況下,且該網站的資源沒被回收的情況下就會固定執行Global。

System.Timers.Timer RegularTimer; //定時檢查黑名單計時器
System.Timers.Timer DailyReportTimer; //每日檢查 以黑名單產生報表
將要執行的內容放在 Application_Start裡面。


剛剛有提到,其實IIS會固定在網站的資源回收,這個可以在IIS的設定中去找回收時間,如果這個網站的資源被回收的話,Global就不會被執行,所以為了避免這個情況必須在Application_End事件裡寫下這段程式碼
void Application_End(object sender, EventArgs e) 
{
   //  在應用程式關閉時執行的程式碼
   System.Threading.Thread.Sleep(1000);
   string Url = "要呼叫的網頁Url";
   System.Net.HttpWebRequest wRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(Url);
   System.Net.HttpWebResponse wResponse = (System.Net.HttpWebResponse)wRequest.GetResponse();
   System.IO.Stream stm = wResponse.GetResponseStream();
}

當IIS回收這個網站結束時,會觸發Global裡的Application_End,在裡面再次呼叫這個網站的隨便一個網頁,使得IIS在重新啟動它,這樣Global又會跑了!!

【ASP】UpdatePanel 與 JQuery


當Update Panel造成PostBack過後,會讓JQuery失效,大致的原因為DOM物件並沒有初始化,可以用以下的方式達成重新設定的目地

$(function () {
   SetJavaScript();
   Sys.WebForms.PageRequestManager.getInstance().add_endRequest(SetJavaScript);
});
function SetJavaScript()
{
   $("#btnAddEvent").click(function(){
      alert('123');
   });
}


將要初始化的內容包在一個function裡面,以上圖來說,將設定包在SetJavaScript()裡面

當Update Panel有更新時,會處發Sys.WebForms.PageRequestManager這段,他就會重新設定了!!

2012年8月15日 星期三

【ASP】防止Session Timeout


客戶的需求是除非登出,不然網站掛著要可以一直使用

也就是不能讓IIS判定你閒置過久將你time out掉

查了一下網路上分享的方法可以歸為兩大類

1.放個iframe連結到一個空的頁面,一段時間就refresh一次

2.用ajax的方式跟server要一個空網頁

但第二個方法我一直沒有式成功,所以採用第一個方法來解這個問題


先藏一個隱藏的iframe並連結到一個空的asp網頁


接著寫JavaScript來驅動他一段時間就refresh一次



這樣就解決摟

PS.IIS預設是閒置20分鐘就Time Out

2012年8月1日 星期三

【ASP】WebConfig設定強迫登入


ASP要強迫使用者登入後才能看到主頁面的話
可以在WebConfig裡面加上這段

登入網站時他會先判斷是否已經為登入狀態,如果為否則會導到wFrmLogin.aspx的頁面去並要求登入帳號密碼

如果要取消這項規定可以改成一下設定