2011年7月29日 星期五

新增Com+應用程式的2個方法

有一個同事前幾天去客戶家裝機, 要挑戰在 x64 環境下執行 32位元的 tabs 2.1版, 有一個元件一直裝不起來,
我與同事透過電話檢查了:
(1) 實體檔案的安全性,
(2) 應用程式集區(Application Pool) 的使用者帳號,
(3) 元件的Create User.
也都沒有問題, 結果還是有錯誤訊號如下:



由於無法完成裝機, 所以要擇日再跑一次, 現在要找出問題在那裡, 為了在公司裡模擬客戶家裝機的錯誤訊息, 就把公司測試機上元件先在Windows Server主機上移除, 然後, 請同事來裝一次看看, 用來找出被勿略的步驟及重現錯誤訊息.

發現他加入元件的方式跟我不一樣, 我用的是直接把元件透過檔案總管拉到Com+ 裡, 他用的是下面這個方法:


雖然方法不同, 結論是相同的, 還是一樣的錯誤訊息. 最後問題還是被解決了, 透過取消勾選下面這一個勾勾.

2011年7月28日 星期四

[IIS].比較好的切換domain name 的做法

─────────────────────────────────
【前言】
─────────────────────────────────
客戶的舊的 domain name 要切換到新的 domain name, 又希望在短時間內, 舊的 domain name 裡的網址可以自動重導(redirect)到新的 doname name.

做法, 舊的 IIS (站台A) 裡的 domain name 直接 修改成新的 domain name.
再建立一個新的 IIS (站台B), domain name 設為舊的 domain name, 並設定 404 錯誤(File not found) 時要執行 max.404Handler.asp 即可完成比較好切換domain name 的做法.



─────────────────────────────────
【設定方式】
─────────────────────────────────
1. 設定 IIS:
設定 404 的類型為 URL,
內容為 /inc/max.404Handler.asp


2. 修改 asp 裡的 domain name 為您的新 domain name:

2011年7月22日 星期五

在 MapPath 方法的 Path 參數裡找到不正確的 '/' 或 '\' 字元。

今天遇到一個熟悉的錯誤訊息:
在 MapPath 方法的 Path 參數裡找到不正確的 '/' 或 '\' 字元。



原因就是 user 太久沒進行操作, 造成 session 值消失了, 然後, 即有的副程式沒有先判斷 session 裡的值是不是空值, 直接存取空值的 session 造成出錯.

解法方案1: 修改這個會出錯的副程式.
解決方案2: 增加下面的程式在登入的檢查頁面中即可:

2011年7月13日 星期三

附件備份小程式(Attachment)

┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 目的 (purpose)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 分享附件備份小程式, 使用的時機在整理實體的檔案附件, 或透過 SQL 指令刪除Database資料後, 需要重新整理實體附件檔案.

 ■ 使用方式, 先建立 Data_new 及 Attachment_new 這2個 Folder, 讓舊的附件 copy 到新的資料夾下.


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 執行畫面 (screen)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 使用前, 附件大約 4萬筆.



 ■ 使用後, Data 附件剩2千筆, 有效的節省空間, 和增加檔案存取的效率.



 ■ 使用後, Attachment 附件剩1千600筆.

2011年7月11日 星期一

分享2個常見的密碼檢查用的功能(password)

┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 目的 (purpose)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 分享3個常見的密碼檢查用的功能,
 ● 1. 每N天更換一次密碼.
 ● 2. 文字長度檢查. (須八碼以上,十六碼以下)
 ● 3. 文字內容檢查. (英數字混合可有特殊符號)



┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ source code 要修改的地方
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 每N天更換一次密碼. (修改 login.asp)



 ■ 每N天更換一次密碼. (修改 Update.asp)

2011年7月7日 星期四

又遇到身份驗證缺陷 (Broken Authentication) 的程式

客戶的新需求, 密碼規則變更:
 ◎ 1. 須八碼以上,十六碼以下,並英數字混合可有特殊符號ex.!@#(但不包括全形符號與$).
 ◎ 2. 每三個月更換一次.

於是著手從即有的別人寫好的應用程式 copy出來修改, 發現一些問題.



--------------------------------------------------
 ■ 問題 1: 身份驗證缺陷 (Broken Authentication)
--------------------------------------------------
某些程式會透過 url 來傳送使用者帳號(ID). 這是一個嚴重的問題, 代表一般的 user 也許可以修改到管理者的資料!

 ● 解決方法:
 ◎ 1. 把帳號先放到 session 裡,
 ◎ 2. 在接收帳號的程式碼, 修改成從 session 裡取值.


--------------------------------------------------
 ■ 問題 2:
--------------------------------------------------
如果固定都是從 session 取得帳號資料, 那這支程式就不能用來修改其他帳號的資料,

 ● 解決方法:
 ◎ 1. 在接收帳號的地方, 再增加權限的判斷, 是管理者才能做 使用者帳號(ID) 的 request,
反之其他人在 request 完之後, 固定再把 使用者帳號(ID) 指派成 session 裡的 使用者帳號(ID).

2011年7月5日 星期二

動態產生的select box 裡的 item 在回一頁時會跑掉

user 反應, 他的訂單資料有錯.

經反複的測試, 終於找到錯誤的原因, 這個bug 是必需輸入過錯誤的資料, 才測試的出來, 發生的因為 user 曾輸入過錯誤的資料, 造成回上一頁時, 動態產生的 select box 裡的 item 會固定變成第1個項目.


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 執行畫面 (Screens)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 1. 在下拉框(select box)輸入正確的資料, 松山區.



 ■ 2. 固定輸入錯誤的資料.



 ■ 3. 畫面一回來, 就會看到 動態產生的下拉框裡固定被帶入第1個項目, 而不是正確的 "松山區".




┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 解決方式 (Solution)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ 增加一個隱藏的欄位, 用來存放送出之前的內容值. 並在回一頁時, 把該值填入動態產生的下拉框之中.

 ※ 附註: 這個隱藏欄位的用法, 建議不要使用 input 的 hidden 欄位來做, 經測試 google chrome 很神奇的會抓不到該 hidden 欄位的值, 即使你在 submit 按鈕按下去之後有給他值. 建議使用 type='text' style='display:none;'

 ※ 附註: 由於 google chrome 和 firefox 都太聰明了, 會 cache 住前一頁的 image, 會造成回上一頁時, 驗證碼會是舊的, 所以要在回上一頁之後, 執行一次 reset 驗證碼的動作.

研究 google 提供的繪圖 API

有一個問卷統計的部分會用到圓餅圖,
發現使用 google 提供的 API 更快, 更方便.


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 範例 (Example)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ hello world:
 → http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World


 ■ pie chart (圓餅圖):
 → http://chart.apis.google.com/chart?chs=220x110&cht=p&chd=s:9DBBB&chl=Windows|Linux|Macintosh|iPhone|iPad


┏┓
┗■━━━━━━━━━━━━━━━━━━━━━━━
 ┃ 相關連結 (Links)
 ┗━━━━━━━━━━━━━━━━━━━━━━━
 ■ Google Chart Tools / Image Charts (aka Chart API)
 → http://code.google.com/intl/zh-TW/apis/chart/image/docs/gallery/chart_gall.html

 ■ Chart Wizard
 → http://code.google.com/intl/zh-TW/apis/chart/image/docs/chart_wizard.html
 → http://imagecharteditor.appspot.com/

2011年7月1日 星期五

MSSQL 不支援此種介面 (No such interface supported)

下面要分享的是解決問題的過程和方法.

今天發生客戶的主機, 無法進行全文檢索的指令, 在執行SQL 指令後, 會發生
"不支援此種介面" (No such interface supported) 的錯誤.




這個問題, 似乎在2年前我有處理過, 由於都沒有留下文件, 而且年代久遠已經完全忘記發生過什麼事情及如何解決, 所以重新再處理一次.

■ step 1: 先用中文字 google 看看, 發現都沒有相關的文章.

■ step 2: 改用英文字 google 看看, 看了很多篇, 似乎也無解.

■ step 3: 縮小 google seareh 的範圍, 加入 /site:microsoft.com , 似乎也無解.

■ step 4: google 無效, 改成比較正式機與測試機間的差異. 開始提出可能的假設.

■ step 4.1: 由於客戶給的Database 主機是給一般的 user 帳號, 所以很多指令無法執行, 先假設是權限造成. 請客戶用管理員帳號, 重建一次全文目錄, 結果還是一樣, 會出錯, 所以排除是權限因素.

■ step 4.2: 測試看看, 使用不同語言的詞庫來斷詞, 看看是否能成功. 結果可以, 但由於詞庫不合, 用英文來斷中文字, 會查不出資料. 可以確定原因之一是: 是中文繁體斷詞出錯.

■ step 4.3: 檢查測試機與正式機上面斷詞的相關參數, 發現 classid 不一致.

v12.0 版就是使用 SQL server 2005 的斷詞 classid 應該是:
954F1760-C1BC-11D0-9692-00A0C908146E

v2.0 就是不斷詞 classid 應該是:
1680E7C3-9430-4A51-9B82-1E7E7AEE5258


■ step 5: 請客戶設定 class id 後, 重啟 SQL Server 服務, 就大功告成, 正常運作了.

Facebook 留言板