發表文章

目前顯示的是有「ASP」標籤的文章

ASP/VBS 自訂錯誤訊息

圖片
'Call Err.Raise(number, source, description) call err.raise(-99, "source-abc", "description-yyyyyyyyyyyyyyyy")

ASP網頁無法正常執行批次程式或VBS程式

圖片
有時因為一些特殊需求,不得不讓ASP網頁直接執行批次程式或VBS程式,雖然這不是個建議的解法,但在有條件下它卻是個可以快速解決問題的方法。 因為作業系統不同,所以設定方式也不大相同,以下用依作業系統別來說明, 1. Windows XP - IIS step-00 開啟IIS設定(它是要在「電腦管理」裡的「服務及應用程式」才看得到) step-01 可以從預設的網站設定(其以下的目錄均會套用相同權限)或針對特定的目錄設定。基本上中間應該可以只勾選「指令碼來源存取」、「讀取」、「寫入」三個選項,不過我是全選。 step-02 使用權限要選擇「指令碼及執行檔」 step-03 應用程式保護要選擇「低 (IIS處理序)」 step-04 在資料夾的「目錄安全設定」中的匿名存取及驗證控制,點選編輯後,在驗證方法視窗將帳戶改成權限較高的帳號,我是指定本機administrator 2. Windows 2003 Server - IIS step-00 開啟IIS step-01 可以從預設的網站設定(其以下的目錄均會套用相同權限)或針對特定的目錄設定。基本上中間應該可以只勾選「指令碼來源存取」、「讀取」、「寫入」三個選項,不過我是全選。 step-02 執行權限要選擇「指令碼及執行檔」 step-03 依「應用程式程式集區」指定的AppPool設定屬性 step-04 依【step-03】應用程式集區的名稱設定身分識別,並改成本機系統(不過會出現警告訊息,因為等同取得本機執行權限)

VBScript Err Object Properties and Methods

圖片
[Property] Number Description Source HelpContext HelpFile [Method] Clear Raise Example: #1 On Error Resume Next Err.Raise 6   ' Raise an overflow error. MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description & "  Source: " & Err.Source) Err.Clear   ' Clear the error. reference web: https://msdn.microsoft.com/en-us/library/a3c123d4(v=vs.84).aspx

透過ASP執行VBS

圖片
當有需要執行一個大量資料更新的邏輯時,若單純使用ASP程式雖然可以達到效果,但往往因為執行時間較長,導致一些問題產生, Request-Response時間很長時,若有其他在相同目錄下的網頁會發生無法正常瀏覽。原因是被判定為同一Session,必需要等上一個執行作業完成後,才會輪到後來執行的網頁解譯。 若想要中斷剛剛Submit的資料處理,經實測後,就算把IIS重新啟動(iisreset /restart),程序依然無法中止,必需要把Server重開機後,才會真正刪除程序 如果把資料處理邏輯改寫至VBS,而ASP只扮演啟動VBS的角色,則可以快速的結束Request-Reponse的作業,可以在Server利用微軟工具Process Explorer看到正在執行的程序(工作管理員只能看到多個wscript.exe的程序,無法知道實際執行的VBS檔名),可以視情況刪除程序。 <工作管理員> <Process Explorer> ※ Process Explorer需要設定欄位,可參考此網址 http://alexlucy99.blogspot.tw/2014/11/process-explorer.html 執行環境: Windows 2003 Server IIS ASP VBS ASP Code set wshell = CreateObject("WScript.Shell") wshell.run "cmd.exe /c cscript D:\VBS_TEST.vbs", 0, false set wshell = nothing 備註: 測試時發現一個狀況,如果執行的VBS有被Windows工作排程設定,ASP是無法正常執行VBS,原因尚未找出來。暫時可以解決的方法為工作排程連結一個批次檔(BAT),而該批次檔再去執行VBS,遶一下彎就可以了

如何取得MSSQL新增資料後的自動識別欄位的值

圖片
在MSSQL資料欄位中,有一種欄位類別為自動識別, 此欄位特性為,insert into時不可以指定值,資料庫會在新增資料時自動給值,所以當資料新增後需求知道系統給什麼值來做後續處理時,則可以使用下列語法, 'VBS' Set conr = Wscript.CreateObject("ADODB.Connection") provider="Provider=sqloledb;Server=0.0.0.0;Database=db;UID=sa;PWD=123;" conr.Open provider '新增資料' sql = "insert into Table_1 (b) values('" & now & "') " conr.Execute(sql) '取得識別欄位值' set rsAdd = conr.Execute("SELECT @@IDENTITY") id=rsAdd(0) set rsAdd = Nothing conr.Close msgbox id Reference Web: http://a0726h77.blogspot.tw/2013/01/asp-connmdbexecutesql-insert-return.html

ASP include file與include virtual的差別

ASP引用ASP檔案有兩個寫法include file及include virtual。 兩個的差別在include file只能寫相對路徑,而include virtal是寫絕對路徑,以下是範例。 檔案存放位置如下, root - commLib   - asp     - commLib.inc     - page_job.inc -引用的網頁 <include file> <!--#include file="/commLib/asp/commLib.inc"--> <!--#include file="/commLib/asp/page_job.inc"--> <include virtual> <!--#include virtual="/commLib/asp/commLib.inc"--> <!--#include virtual="/commLib/asp/page_job.inc"--> 參考網址:http://www.blueshop.com.tw/board/FUM200410061525290EW/BRD20090203131039ED0.html

ASP怎麼做到Try-Catch

圖片
寫了那麼多年的程式,雖然很久沒有寫ASP了, 但我一直以來的印象就是VB系列(VB、VBScript、ASP)是沒有辦法做到Try-Catch。 但今天為了寫工作上的一支ASP ,上網查了一下,原來有下面這個用法,和C Like的Try-Catch滿像的。 這裡用一個很簡單數學運算會發生的除以0來測試。 <% On Error Resume Next '下一行程式是否會發生Exception' num1 = 10/0 If Err.Number <> 0 Then '發生Exception' response.write "除數不能為0" '解除Exception狀態, 否則後面的語法如果還有發生Exception都會被忽略' On Error GoTo 0 Else '無error' response.write num1 '解除Exception狀態, 否則後面的語法如果還有發生Exception都會被忽略' On Error GoTo 0 End If %> 這樣會發生下面的錯誤: 但如果使用下面的寫法, <% num1 = 10/0 response.write num1 %> 就可以順利防呆了。 參考網址:http://www.blueshop.com.tw/board/show.asp?subcde=BRD20050413223431CV7

ASP include inc

index.asp library.inc