2013年6月4日 星期二

修改Win Server IIS 檔案上傳限制方法


IIS6.0的修改檔案上傳限制方法

  1. 在IIS中右鍵「本地電腦」選擇「屬性」,鉤選「允許直接編輯設定資料庫」;
  2. 在服務裡關閉「IIS Admin Service」服務;
  3. 找到c:\windows\system32\inetsrv\下的「MetaBase.xml」,打開,找到「AspMaxRequestEntityAllowed 」把他修改為需要的值,預設為204800,即200k ,把它修改為51200000(50MB);
  4. 然後重啟「IIS Admin Service"服務。 
在 IIS 6.0 中,無法下載超過4M的附件時,可以按以下步驟解決 :
  1. 先在服務裡關閉 iis admin service 服務。
  2. 找到 windows\system32\inetsrv\ 下的 metabase.xml 檔。
  3. 用純文字方式打開,找到 AspBufferingLimit 把它修改為需要的值,預設為4194304(可修改為20M即:20480000)。
  4. 4、存檔,然後重啟 iis admin service 服務。


IIS7.0的修改檔案上傳限制方法

  1. 打開IIS管理器→ 按兩下「IIS」中的「ASP」→ 打開「限制內容」;
  2. 修改「要求實體的上限」的值,預設值為200000(即不到200KB);
  3. 把它修改為你想修改的大小,如:52000000(50MB);
  4. 修改完成點擊「套用」,建議重新啟動系統,一切就OK了!

附:iis7 上傳大檔限制的真正解決辦法

  1. 打開「Internet 資訊服務(IIS)管理器」;
  2. 關閉IIS服務;
  3. 按兩下「Default Web Site「→按兩下中間窗格中的「要求篩選」→按一下右側窗格的「編輯功能設置」→修改「請求限制」下面的「允許的最大內容長度」,預設是30M,隨便改大一點,我改成300M,點擊「確定」;
  4. 重新開機IIS,再上傳試試,50M、90M都可以了。

2012年9月19日 星期三

ASP 陣列拆法


'=== 陣列拆法 已知或固定的陣列數 =============================
TradeCode_1 = ""
TradeCode_2 = ""
TradeCode_3 = ""
if( InStr(rs("TradeCorpType"), "|") > 0 ) then 
arrTradeType = split( rs("TradeCorpType"), "|" )
For i = 0 To UBound(arrTradeType)
if( i = 0 ) then 
TradeCode_1 = arrTradeType(0) 
TradeCode_1_Cname = fetchCorpTypeName (TradeCode_1)
elseif( i = 1 ) then 
TradeCode_2 = arrTradeType(1)
TradeCode_2_Cname = fetchCorpTypeName (TradeCode_2)
elseif( i = 2 ) then 
TradeCode_3 = arrTradeType(2) 
TradeCode_3_Cname = fetchCorpTypeName (TradeCode_3)
end if
Next
end if 

'=== 陣列拆法 未知或動態的陣列數 =============================
if( InStr(rs("TradeCorpType"), "|") > 0 ) then 
arrTradeType = split( rs("TradeCorpType"), "|" )
For i = 0 To UBound(arrTradeType)
TradeCode = arrTradeType(i) 
Next
end if  

2012年5月13日 星期日

關閉視窗 Javascript

Explorer 6
window.opener=self;
window.close();
Explorer 7
window.open(”",”_self”);
window.close();

方式一

<SCRIPT LANGUAGE="JavaScript">
<!--
function closeWin(){
   window.open("","_self");
   top.opener=null;
   top.close();
}
//-->
</SCRIPT>
<body onLoad="closeWin();">

2012年4月17日 星期二

x64-bit環境執行32-bit COM DLL

x64-bit環境執行32-bit COM DLL
如果發生下列錯誤,為具有 CLSID {166EB857-8CCD-4D83-8F27-CADDB2800374} 的元件擷取 COM Class Factory 失敗: 80004027。

乃是由於在x64-bit環境上執行32-bit DLL所致.

x64-bit環境如何執行32-bit COM DLL?

1.如果已經註冊32-bit 到 x64 作業系統, 先解除安裝例如: "regsvr32 /u C:\MyDLL\CRAXDRT.DLL"
2.確定dll不在Windows目錄像C:\Windows. 本例CRAXDRT.DLL 放在C:\MyDLL目錄中.
3.執行控制台->系統及安全->系統管理工具->元件服務
->電腦->我的電腦->COM+應用程式->右鍵->新增->應用程式.
4.歡迎使用COM+應用程式安裝精靈->下一步.
5.選擇"建立空的應用程式".
6.本例名稱用CRAXDRT, 選伺服器應用程式->下一步.
7.選"互動式使用者-目前登入的使用者"->下一步, 下一步->完成.
8.現在在COM+應用程式下多了一個CRAXDRT, 點選CRAXDRT左方三角型會看到下拉元件, 傳統元件, 角色三個目錄, 點選元件右鍵新增->元件.
9.歡迎使用COM+元件安裝精靈->下一步.
10.選安裝新元件->選擇:C:\MyDLL\CRAXDRT.DLL.->下一步->完成.
11.點選CRAXDRT右鍵->內容->安全性, 不勾選->強制此應用程式的存取檢查, 不勾選->套用軟體限制原則, 模擬等級選匿名->確定.
12.如須由WEB 應用程式存取DLL(如本例)則必須加設定ASPNET及IIS_WPG角色.
13.點選CRAXDRT->角色->CreateOwner->使用者->右鍵->新增->使用者.
14.分別加入ASPNET及IIS_WPG二個使用者到CreateOwner.
15.大功告成.

2012年1月18日 星期三

Win R2 是64位元系統開Access方式

由於Win R2 是64位元系統。在用IIS測試ASP網站時,連接資料庫代碼總是不成功。


"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db) 用這種方式時返回“3706”錯誤值。


"Driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db) 用這種方式時返回“-2147467259”錯誤值。


因為Win2008 R2 是64位操作系統。而64位元作業系統不支援Microsoft OLE DB Provider for Jet驅動程式,也不支援更早的Microsoft Access Driver (*.mdb)方式連接。所以用於 Access 和 Excel 資料庫的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用,也就是說,如下兩種連接字串都已經無法正常工作了:


"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db)。

"driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db)。

要解決這問題,只有讓IIS環境設置成32位。IIS的版本不一樣處理起來也會不一樣。下面就分別對IIS7和IIS6處理作說明。

一.IIS7處理起來很簡單,具體步驟如下:

在IIS7下選擇“應用程式池”,右擊對應網站的應用程式池,“啟用32位元應用程式”設置為“True”即可。

二.IIS6處理,具體步驟如下:


1.在命令列輸入:

cscript.exe %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

2.重新註冊.NET FrameWorks.
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

3. 完成之後,應該會看到多出一個32位的asp.net,將其設置為允許,缺點:這樣會使整個IIS上的所有網站都以32位元相容方式運行。

2011年12月29日 星期四

執行 ASP 頁導致回應緩衝區超出其設定限制

執行存放於Windows 2003(IIS 6.0)的ASP程式,若出現「…執行 ASP 頁導致回應緩衝區超出其設定限制…」等錯誤訊息,依MSDN的說法,其發生的原因是:「之所以發生這個問題,是因為 IIS 6.0 中引進並加入 IIS 5.0 的行為變更。這些版本的 IIS 會強制執行 4 MB 的預設 ASP 回應緩衝區上限。此限制防止大型的 ASP 回應對裝載 Web 應用程式的 IIS 處理序造成不利的影響。」
解決方法就是將Buffer調大囉:在DOS模式下,執行底下指令
C:\windows\system32\cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/aspbufferinglimit 10485760
10485760這數字即是buffer的大小,10MB之意(即1024*1024*10),視自己的需求而定。
此指令如果執行有誤,請確認下cscript.exe及adsutil.vbs的存放路徑是否正確。
一般而言cscript.exe存放於C:\windows\system32目錄下,adsutil.vbs存放於C:\Inetpub\AdminScripts目錄下

2011年12月4日 星期日

Windows 2003 server 32bit 與 64bit對SQL開檔方式

Windows 2003 server 32bit 與 64bit對SQL開檔方式:


db_name = 資料庫名稱

2003 Server 32bit方式:
db_conn.Open "driver={SQL Server};server=電腦名稱或IP;uid=SQL登入帳號;pwd=SQL登入秘密碼;database=" & db_name

2003 Server 64bit 方式:
db_conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=電腦名稱或IP;UID=SQL登入帳號;PWD=SQL登入秘密碼;DATABASE=" & db_name


2007年12月28日 星期五

ASP RecordSet 相關函數說明

【RecordSet.Fields.Count 】傳回Recordset中的欄位數。
【RecordSet(i).Name 】傳回Recordset中第i個欄位的名稱。
【RecordSet.RcordCount 】傳回Recordset中資料錄的筆數。
【RecordSet(i) 】傳回RecordSet目前紀錄中的第i個欄位資料。
【RecordSet.BookMark 】傳回設定的書籍資料以儲存現在紀錄的位置。
【RecordSet.AbsolutePostition 】將指標移致RecordSet中的某一筆資料上。
【RecordSet.PageSize 】設定每頁顯示的資料筆數。
【RecordSet.PageCount 】傳回分頁後的總頁數。
【RecordSet.AbsolutePage 】傳回目前所在的頁數。
【RecordSet("欄位名稱") 】傳回指定欄位名稱的資料內容。
【RecordSet.BOF 】判斷指標是否超過最前面。
【RecordSet.EOF 】判斷指標是否超過最後面。
【RecordSet.MoveFirst 】將資料錄指標移至第一筆。
【RecordSet.MoveLast 】將資料錄指標移至最後一筆。
【RecordSet.MoveNext 】將資料指標往後移一筆。
【RecordSet.MovePrevious 】將資料指標往前移一筆。
【RecordSet.GetRows 】可將Recordset中的資料儲存至陣列中。
【RecordSet.AddNew 】新增資料至資料表中。
【RecordSet.Update 】更新目前這筆資料。
【RecordSet.Delete 】刪除目前這筆資料。
【RecordSet.Find 】尋找資料值。

常用的時間函式

=== 1.Now 傳回系統的日期及時間。===============
使用方法:無
例:Now 傳回值:2002/11/2 10:23:30 AM

=== 2.Date傳回系統的日期。 ===================
使用方法:無
例:Date 傳回值:2002/11/2

=== 3.Time 傳回系統的時間。===================
使用方法:無
例:Time 傳回值:10;23:30 AM

=== 4.Year 傳回系統的年份。 ==================
使用方法:Year[(1-3的時間函式)]
例:Year(Now) 傳回值:2002

=== 5.Month 傳回系統的月份。 =================
使用方法:Month[(1-3的時間函式)]
例:Month(Now) 傳回值:11

=== 6.Weekday 傳回系統的星期幾的數字。 ========
使用方法:Weekday(1-3的時間函式,[星期天的開始數字])
例:Weekday(Now,7)傳回值:14
備註:若不設定開始數字,則星期天為1,.....星期六為7。設定了則由星期天累加。

=== 7.Day 傳回系統的日子。 ===================
使用方法:Day[(1-3的時間函式)]
例:Day(Now) 傳回值:2

=== 8.Hour 傳回系統的小時。 ==================
使用方法:Hour[(1-3的時間函式)]
例:Hour(Now) 傳回值:11

=== 9.Minute 傳回系統的分鐘。 ================
使用方法:Minute[(1-3的時間函式)]
例:Minute(Now) 傳回值:23

=== 10.Second 傳回系統的秒。 ================
使用方法:Second[(1-3的時間函式)]
例:Second(Now)傳回值:30

=== 11.Cdate 轉換成日期變數型態。============
使用方法:Cdate(日期運算式)
例:Cdate(Now) 傳回值:2002/11/2 10:23:30 AM

=== 12.DateAdd 用以計算時差,即時間加減。 ====
使用方法:DateAdd("時間代碼",加減數,日期運算式)
例:DateAdd("H",2,Now) 傳回值:2002/11/2 12:23:30 AM
備註:日期運算式看備註

=== 13.DateDiff 計算兩段時間差距。 ==========
使用方法:DateDiff("時間代碼",日期運算式1,日期運算式2)
例:DateDiff("H","2002/11/2 12:23:30 AM",Now) 傳回值:2
備註:日期運算式看備註

=== 14.DatePart 傳回一個日期中的一部分。======
使用方法:DatePart("時間代碼",日期運算式)
例:Part("H",Now)傳回值:10
備註:日期運算式看備註

=== 15.DateSerial 轉換三個參數為日期形態。 ===
使用方法:DateSerial(年,月,日)
例:DateSerial(2002,11,2)傳回值:2002/11/2

=== 16.DateValue 轉換日期字串成日期形態。 ====
使用方法:DateValue("日期字串")
例:DateAdd("November 2,2002")傳回值:2002/11/2

=== 17.IsDate 檢查變數是否為日期形態或字串可否轉成日期。===
使用方法:DateValue("日期字串")
例:DateValue("November 2,2002")傳回值:True

=== 18.MonthName 傳回月份的名稱。 ============
使用方法:MonthName("日期字串")
例:MonthName(Now)傳回值:November

=== 19.TimeSerial 轉換三個參數為時間形態。====
使用方法:TimeSerial(時,分,秒)
例:TimeSerial(10,23,30) 傳回值:10:23:30

=== 20.WeekDayName 傳回週幾的名稱。 =========
使用方法:WeekDayName("日期字串")
例:WeekDayName(Now) 傳回值:Saturday


【備註】
以上內容皆假設該時間為
2002年11月2日上午10時23分30秒星期六
[...]內的參數可有可無。
時間代碼(運算式):
yyyy 年、q 季、n 月、d 日、w 星期、h 時、m 分、s 秒

UltraDev 與各種資料庫的連線字串

UltraDev 提供了多種方式,讓 ASP 的使用者與資料庫建立連線:

•自己的電腦 -- 可以使用 DSN、自訂連線字串
•應用程式伺服器上 -- 可以使用 DSN、自訂連線字串或 Server.Mappath


下面列出了幾種常見的資料庫,在 ASP 網站應用程式中使用 ADO 連線字串的範例。請特別注意,在自訂連線字串的對話框中,每個連線字串只能為同一行,不可以換行!但因網頁顯示的關係可能會換行,你必須自行將它連接起來。

ODBC DSNLess connection(不需要DSN的連線)
--- MS Access ODBC 開檔方式 --------------------------------------------------
Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\somepath\dbname.mdb;Uid=Admin;Pwd=pass;

--- dBase ODBC 開檔方式 --------------------------------------------------
Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\somepath\dbname.dbf;

--- Oracle ODBC 開檔方式 -------------------------------------------------
Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=admin;Pwd=pass;

--- MS SQL Server 開檔方式 -----------------------------------------------
Driver={SQL Server};Server=servername;Database=dbname;Uid=sa;Pwd=pass;

--- MS Text Driver 開檔方式 ----------------------------------------------
Driver={Microsoft Text Driver (*.txt;*.csv)};Dbq=c:\somepath\;Extensions=asc,csv,tab,txt;Persist Security Info=False;

--- Visual Foxpro 開檔方式 -----------------------------------------------
Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\somepath\dbname.dbc;Exclusive=No;

--- MySQL 開檔方式 -------------------------------------------------------
driver={mysql}; database=yourdatabase;uid=username;pwd=password;option=16386;


OLE DB 連線MS Access OLE DB 開檔方式(DSN的連線)
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\somepath\dbname.mdb;User Id=admin;Password=pass;

--- Oracle OLE DB 開檔方式 -----------------------------------------------
Provider=OraOLEDB.Oracle;Data Source=dbname;User Id=admin;Password=pass;

--- MS SQL Server OLE DB 開檔方式 ----------------------------------------
Provider=SQLOLEDB;Data Source=machineName;Initial Catalog=dbname;User ID=sa;Password=pass;

--- MS Text Driver OLE DB 開檔方式 ---------------------------------------
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\yourpath;Extended Properties='text;FMT=Delimited'"


<%=Server.MapPath("")%>
※你便可以利用這個資訊,在 ADO 連線字串中建立出資料庫的路徑。事先就找出檔案路徑要比使用 Server.MapPath 這樣的物件方法好的多。

在 UltraDev 4 中使用 Server.Mappath
在 UltraDev 4 中,自訂連線字串的方式允許你使用 Server.Mappath,不過先決條件是:
•定義連線的對話框中必須指定為「應用程式伺服器」,「這台機器」是不支援這種方式的。
•必須在連線字串中指出根目錄的路徑。
•請確定連線字串的第一個部份前後有使用雙引號括住。

典型的 Access 資料庫 DSNLess 連線字串,使用 Server.Mappath 在 VBScript 寫起來是這樣的。請注意在自訂連線字串的對話框中,只能為同一行文字。

"Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.Mappath("\somepath\dbname.mdb") & ";Uid=Admin;Pwd=pass;"

而典型的 Access 資料庫 OLEDB 連線字串則是:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("\somepath\dbname.mdb") & ";User Id=admin;Password=pass;"

如果你使用 ASP JavaScript,則必須將 & 符號改為 + 號,像是這樣:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.Mappath("\somepath\dbname.mdb") + ";User Id=admin;Password=pass;"

如果你使用 UltraDev 1,千萬不要在自訂連線字串中使用 Server.MapPath 這種方式,不然的話會讓 UltraDev 無法使用 。也就是說,你可以加入這樣的原始碼,但是資料繫結面板內不會顯示出任何資料。

2007年12月12日 星期三

2000與2003Mail發送方式

Windows 2000 發信方式
Set mail = Server.CreateObject("CDONTS.NewMail")
mail.to ="scott@universe.com.tw"
mail.From = "verigy@universe.com.tw"
mail.Subject = "" & Trim(Request("EventID"))
Body = ""
Body = Body & ""
mail.Body = Body
mail.BodyFormat=0
mail.MailFormat=0
mail.Send


Windows 2003 發信方式
Set mail = CreateObject("CDO.Message")
mail.to ="scott@universe.com.tw"
mail.From = "verigy@universe.com.tw"
mail.Subject = "" & Trim(Request("EventID"))
Body = ""
Body = Body & ""
mail.HTMLBody = Body
mail.Send