2007年12月10日 星期一

利用Telnet測試郵件

在撰寫發送郵件的程式時,由於沒有設定SMTP Server的緣故,所以無法正常地發送郵件。

以下是使用Telnet測試郵件格式的方法:


1 執行「命令提示字元」程式
2 輸入「telnet 127.0.0.1 25」,再鍵入「Enter」-->開啟telnet的畫面
3 輸入「helo XXX」再「Enter」。-->「XXX」表示可以隨便打,只是讓系統識別用
4 輸入「mail from : XXX@XXX.XXX.XX」再「Enter」。-->是由誰寄的
5 輸入「rcpt to : YYY@YYY.YYY.YY」再「Enter」。-->寄給誰
6 輸入「data」再「Enter」-->告訴系統要開始輸入信件的本文了
7 本文輸入完畢後,再「Enter」。-->當然,內容可以加入許多格式
8 加入一個「.」的符號表示結束
9 最後下「quit」離開








當沒有設好SMTP Server時,信一定寄不出去,
所以可以到「C:\Inetpub\mailroot」觀看信件的狀況,及編譯的格式



mailroot的目錄:


Badmail用來放SMTP Svc寄不出的退信


Drop是被丟棄的信


Mailbox則用來存放寄給本機使用者的信



  • (MS SMTP Svc其實有收信功能的,只要Domain Name設對了,user@yourSmtpDomain.com的信就會被放到這裡)

Queue、Route、SortTemp都是傳送過程中暫存信件用的。



  • 如果信件卡住沒送出去,則可以在Queue中看到大排長龍

SMTP設定

選擇「存取頁籤中的轉接」鈕,設定成如下圖-->將127.0.0.1加入允許Relay的IP清單

2007年12月5日 星期三

DataList 的分頁功能

ASP.Net只有DataGrid有分頁功能,而其它的需要自行製作
使用「PagedDataSource」達到分頁功能的製作方法:

DataTable dt=new DataTable (); //宣告一個新的「DataTable」物件
PagedDataSource Pgds =new PagedDataSource (); //宣告一個新的「分頁」用物件
(適用於DataTable)
dt=ds.Tables [0]; //將資料丟給DataTable(此來源資料是DataSet)
Pgds.DataSource =dt.DefaultView ; //將dt的資料丟給分頁的物件
Pgds.AllowPaging =true; //設定分頁功能開啟
Pgds.PageSize =2; //每頁顯示的數量

DL_Prototype.DataSource =Pgds; //把分頁物件的資料丟給DataList


Pgds.CurrentPageIndex=0; //此屬性用來控制顯示哪一頁的(第0頁開始)

其它的,再自行應用…

2007年11月16日 星期五

SQL效能的技巧

假設遇到以下情形:(執行SQL更新語法)

update dbo.pre_case
set
pc_handle_ext=(select com_telext from common..comper cc
      inner join common..orgcod co on cc.com_orgcd=co.org_orgcd
      inner join common..depcod dp on cc.com_deptid=dp.dep_deptid
      where com_empno=@handleno),

pc_service_ext=(select com_telext from common..comper cc
      inner join common..orgcod co on cc.com_orgcd=co.org_orgcd
      inner join common..depcod dp on cc.com_deptid=dp.dep_deptid
      where com_empno=@handleno),

pc_service_dept=(select dep_deptname from common..comper cc
      inner join common..orgcod co on cc.com_orgcd=co.org_orgcd
      inner join common..depcod dp on cc.com_deptid=dp.dep_deptid
      where com_empno=@handleno)
where pc_no=@id

發現有三部份相同的Select語法,
建議可改成:

declare @pc_handle_ext nvarchar(20);
declare @pc_service_ext nvarchar(20);
declare @pc_service_dept nvarchar(20);

select @pc_handle_ext=com_telext ,@pc_service_ext=com_telext ,
@pc_service_dept=dep_deptname
from common..comper cc
inner join common..orgcod co on cc.com_orgcd=co.org_orgcd
inner join common..depcod dp on cc.com_deptid=dp.dep_deptid
where
com_empno=@handleno

--先將要修改的值存於SQL變數中,不用跑三次,一次就解決

update dbo.pre_case
set
pc_handle_ext=@pc_handle_ext,
pc_service_ext=@pc_service_ext,
pc_service_dept=@pc_service_dept 
where pc_no=@id

之後再執行一次SQL更新的語法,將@變數值存入欄位裡即可

2007年10月22日 星期一

設定 dropdown 的預設值注意事項(10.22)

當你要設定 dropdown 的預設值時,請勿直接用

dropdown.SelectedValue = xxx 的方式

因為當你所指定的 xxx 並不存在於 dropdown.items 裡面時,反而會出現錯誤。
比較好的方式,是透過 foreach 方式


foreach (ListItem it in dropdown.Items)
{

if ( it.Value== "xxx" )

{ it.Selected=true; }

else

{ it.Selected=false; }


}

2007年10月18日 星期四

Server.Transfer與Server.Execute及Response.Redirect三者比較(10/18)

Server.Transfer與Server.Execute是IIS 5.0才新增的功能

兩者的轉換時機差異為

  • 執行Server.Transfer('URL')後,便直接導向該網頁
  • 執行Server.Execute('URL')後,先不直接導向該網頁,會先執行完下面程式碼後才導出

兩者資料差異為

  • 執行Server.Transfer('URL')後,先前使用的Request.QueryString["var"],可以在導入的網頁繼續使用,而Server.Execute()則不可

Response.Redirect的功能

此方法需要由IIS網站先傳送到瀏覽器,瀏覽器再向將IIS網站要求轉向到另一個網頁,如此會增加一次用戶端與網站伺服器之間的來回通訊時間

至於不同點的話,則是直接導出不執行之後的程式碼,也不會有任何資料帶過去

三者功能皆有不同,視需求而定吧!!

2007年9月21日 星期五

SqlDataSource設定回傳參數的Parameter(9.21)

在SQL裡,我們常會用到「回傳型態」的預存程式,但是在ASP.Net,該如何取出回傳值呢?



**設定回傳參數的使用方法:


Parameter abc= new Parameter();   //abc為自訂變數


abc.Direction = ParameterDirection.Output; //設定為「回傳式」的參數


abc.Name = "identity"; //「identity」為SQL預存程式裡使用的回傳變數名稱


abc.Type = TypeCode.Int64; //設定此參數的型態


//(如果是字串的話,需另外設定Size的屬性大小,以免被截斷。例:abc.Size=50。最高到100)


SqlDataSourcePlan_attfile.SelectParameters.Add(abc);



**取得回傳參數的使用方法:(在SqlDataSourceSelected事件中)

int xyz= e.Command.Parameters["@identity"].Value;

2007年9月11日 星期二

showModalDialog的三個問題?(9.11)

Q1 不能另開視窗

A1 在超連結的部份,須要加入Target

Q2 IE會自動儲存網頁,以致不能更新最新網頁

A2 在網頁前端加入「< % Response.Expires = 0; % ><% Response.Expires = 0; %>」 ,讓該網頁不儲存










Q3 結束彈出視窗後,資料未異動 (在彈出視窗已更新資料庫資料,母畫面未更新)

A3 在window.showModalDialog( )完後,加入一行window.location.reload();








2007年9月7日 星期五

switch 陳述式

switch (abc)
{
case "1"//條件值1
Response.Write("這是1"); //所要執行的動作
break; //必要加的一段文字

case "2"//條件值2
Response.Write("這是2");
break;

}

無法存取 IIS Metabase(9.7)

由於XP預設沒有安裝IIS,而如果已經先安裝好了.NET Framework 2.0之後才安裝IIS
那麼再開啟ASP.NET 2.0的網頁時就會遇到以下的訊息

「無法存取 IIS Metabase」

解決方法:

1. 開啟「Visual Studio 2005 命令提示字元」
2. 執行「aspnet_regiis -i 」,.NET Framework進行初始化

2007年8月22日 星期三

SSIS資料轉換圖解教學(8.22)

新增「資料流程」
拖曳「OLEB DB來源」元件
設定「資料來源」
拖曳「緩時變維度」元件
建立二元件的關聯
設定「目的地資料表」及「索引鍵」,對應「欄位」
設定「變更屬性」
勾選「異動時變更」
勾選「推斷設定」(預設)
轉換結構圖
執行封裝
執行結果




windows忘記密碼,用命令列使用管理員權限(8.22)

如果windows忘記密碼,可將密碼設為空白,重新登入後修改新密碼的

有二個方式
============================================================


方法一步驟如下:

1.將BIOS改為軟碟開機
2.利用軟碟開機後,在DOS下
3.進入C:WinntSystem32ConfigSam
4.刪除Sam檔,重新開機即可

註:重新開機後,帳號還在,密碼已經設為空白。

============================================================
方法二步驟如下:


1.在電腦啟動時按〔F8〕及選〔Safe Mode With Command Prompt
2.選 〔Administrator〕後便會跳出〔Command Prompt〕的窗口
3.用〔Net〕的命令增加一個用戶,例:增加一個用戶名為 alan, 命令語法如下
net user alan /add
4.將新增用戶提升至 Administrator 的權力,例:提升剛才增加用戶 alanhkg888 的權力
命令語法如下 net localgroup administrators alan /add
5.完成上列步驟後重新啟動電腦,在啟動畫面上便增加了一個用戶 alan了,選 alan 進入
6.登入後在〔控制台〕→〔使用者帳戶〕→選忘記密碼的用戶,然後
選〔移除密碼〕後〔 登出〕
7.在登入畫面中選原來的用戶便可不需密碼情況下等入 (因已移除了)
8.刪除剛才新增的用戶,在〔控制台〕→〔使用者帳戶〕→選〔alan〕, 要然後選〔移除帳 戶〕便可

註:方法二不適用於忘記安裝時所設定〔administrator〕的密碼

啟動瀏覽器時即彈出很多廣告網站(8.22)

這是瀏覽器被網站綁架所致
其原理就是透過開機時的啟動功能去執行指令,令瀏覽器打開指定的網站

要解決問題:

執行Regedit,點選「編輯」-->「尋找」

輸入那網站的網址作關鍵字,搜尋結果中應包含「internat.exe」機碼
就在這機碼上雙擊進入編輯對話框,然後在「數值資料」中將那個網址刪除



「開始」-->「執行」,輸入msconfig,打開「Startup」頁
從對話框中提供的資料判斷哪些是可疑程式,先將其暫停執行試試效果
若證實是有問題的來源便可刪除

該記憶體不能為read或written的解決方案(8.22)

相信許多人都為「該記憶體不能為read或written」而傷腦筋
大家不妨試用下列命令重新註冊所有的dll

開始>>執行>>輸入 cmd >> 按「確定」,出現DOS窗口,在命令提示符下輸入

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

如果怕輸入錯誤的話,可以複製這條指令
然後在命令提示框點擊左上角的 c:\ 貼上便不會輸入錯了
飛速滾屏完全靜止前先別著急啟動其他程式,先耐心等一會兒,因為此時 dll 們還在找位置
需要一至二分鐘的時間註冊,請耐心完成。

2007年8月17日 星期五

多載使用(8.17)

在C#若要使用多載的話,不用特別宣告為overload,只要直接宣告sub,寫參數就行

取得AD帳號(8.17)

User.Identity.Name可以取得登入的使用者完整名稱
經由字串處理可以取得名字的部份

可以這樣測試
ADTest.aspx


string fn = User.Identity.Name; 可得到「主機(網域)名\帳號」
int p = fn.LastIndexOf("\\");
Response.Write(fn.Substring(p+1));
可得到「帳號」

ADTest.aspx放在任何一個NT整合驗證的虛擬目錄(就是以匿名帳號存取)

2007年8月13日 星期一

取得虛擬網頁路徑(8.13)


this.Request .CurrentExecutionFilePath :取得虛擬網頁路徑