顯示具有 .NET 2.0 C# 標籤的文章。 顯示所有文章
顯示具有 .NET 2.0 C# 標籤的文章。 顯示所有文章

2010年4月20日 星期二

日前一直遇到session會無故不見了的問題,爬文後找到這篇參考資訊,覺得整理的真的很詳細,為了日後不用再重新去找,所以把它節錄到我的部落格中,也和我的朋友們一同分享

  1. web.config裡的sessionState timeout屬性,單位是分鐘,如果該Session頁面idle超過這個設定,Session值就會不見。
  2. Code裡面執行了清除Session的動作,如Session.Abandon()、Session.Clear()、Session.RemoveAll()
  3. window.open與window.showModalDialog混合使用
  4. 機器名稱含『底線』
  5. IIS Application Pool中處理序數目設定
  6. web.config異動、dll異動、虛擬目錄的刪除與更名導致Dynamic Compilation
  7. Session因為cookieless互相干擾(感謝gipi哥的補充)
  8. 防毒軟體掃瞄(感謝gipi哥的補充)

結論

Session消失的問題,總是很麻煩,
通常都是在User-site的機器,『偶爾』跟『不知道為什麼』會出現Session值掉了的問題,不容易模擬出一樣的環境,
不管是因為時間、機器名稱設定、UI操作行為、IIS站台設定、虛擬目錄架構問題,都是不容易模擬和發現的錯誤。

引用出處來自這位微軟MVP的網誌

javascript的showModalDialog與window.open造成session遺失的問題

Session掉了有很多種可能,

不過如果程式裡面有用到javascript進行開窗的動作,

那就很有可能是因為混著用showModalDialog跟window.open導致session遺失。

簡單來講,就是

ShowModalDialog之後,不能用window.open來開窗,否則新視窗裡面無法讀取Session

簡單的例子,混著用這兩種開窗:

open 代表 window.open
modal 代表 window.showModalDialog


Y = session 還在
N = session 不見了

連續開窗使用方式 Session是否仍然存在
open/open/open Y/Y/Y
modal/modal/modal Y/Y/Y
open/modal/open Y/Y/N
modal/open/modal Y/N/N
open/modal/modal Y/Y/Y


2010年1月20日 星期三

NPOI介紹相關參考資料

在.NET上的POI:NPOI
POI專案本身的處理Office檔案的函式庫,包含Word、Excel、PowerPoint、OutLook、Visio、Publisher等檔案。
參考網址
在Server端存取Excel檔案的利器:NPOI Library
NPOI簡介
NPOI Downloads

2009年9月1日 星期二

指定button為enter的第一個觸發button

經常希望在登入頁的登入button為key完帳號,密碼後的按enter的第一個觸發button,可是如果在這個button之前有其他的button,那麼,預設的第一個button就會是整個頁面上的第一個,為了解決此問題,可將整頁用panel包起來設定DefaultButton="登入button name"即可讓登入的button為第一個觸發的按鈕.

2009年8月31日 星期一

局部設定responseEncoding

通常我們會因為整個系統中要使用的編碼會設定在web.config中,

但是有時會因為與其他系統的介接需要做response,而對方的系統只吃big5時可以單支指定
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("big5");


context.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("big5");
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("big5");
context.Response.AppendHeader("Content-Disposition", "attachment;filename=big5");

來做局部設定

2009年8月17日 星期一

取固定長度的顯示字串

///
/// 取固定長度的顯示字串
///

/// 原始字串
/// 最大長度
///
public string ShowString(string strOri, int iMax)
{
string strResult;
int n;

strResult = "";
n = 0;

for (int i = 0; i < strOri.Length; i++)
{
char ch = strOri[i];

if (ch >= 'a' && ch <= 'z')
{
n += 1;
}
else if (ch >= 'A' && ch <= 'Z')
{
n += 2;
}
else
n += 3;

if (n >= (iMax - 2) * 3)
break;

strResult += strOri[i];
}

if (strResult.Length < strOri.Length)
strResult += "...";
return strResult;

}

2008年6月20日 星期五

將123456 轉為$123,456

Double aa = Double.Parse("123456");
this.Textbox1.Text = aa.ToString("$#,##0;($#,##0);Zero");

2008年6月19日 星期四

ASP.NET取得前一頁的URL

request.servervariables("HTTP_REFERER")