สวัสดีครับทุกท่าน หายไปสักพักเห็นจะได้
ยังไม่เลิกเขียนนะครับ เรื่องดีๆไม่เลิกคิด พูด ทำครับ
หายไปเขียนคู่มือโปรแกรม orangeHRM ครับ
ตอนนี้ก็ยังไม่เสร็จอยู่ดี
ไว้ว่างๆจะมาให้อ่านครับ
มารอบนี้ผมนำเรื่องแนว Develop มานะครับ
อาจจะอ่านไม่เข้าใจ ก็ไม่แปลก หากท่านไม่ได้ทำงานในด้านเฉพาะนี้
ผมหวังว่าท่านผู้อ่านจะนำไปแก้ปัญหาได้ตามที่ผมเคยประสบมานะครับ
ท่านผู้อ่านที่เคยใช้ iis เพื่อใช้งานเป็น Web server
หรือเพื่องานพัฒนาระบบ We
b Application ต่างๆ ท่านคงเริ่มเห็นความเปลี่ยนแปลงไปของ IIS
มากขึ้นทีละน้อย
จะด้วยเตุผลทางการค้า
หรือเพื่อประโยชน์ทางการพัฒนาระบบผมเองก็มีอาจแน่ใจ
แต่อย่างไรเสีย เรามาดูกันดีกว่าครับว่าเปลี่ยนไปอย่างไร
1.asp ไม่ได้ติดตั้งมากับ IIS
ต่างกับ iis5.1
บน winxp ครับที่ติดตั้งมาและพร้อมใช้งานทันที
หากติดตั้ง iis ลงไปแต่ไม่ได้เลือก optional
ไว้ก็จะปรากฏข้อความดังนี้เมื่อ run asp
--------------------------------------------------------------------------------------------------------------------
HTTP Error 404.3 - Not Found
Description: The page you are requesting cannot be served because of the Multipurpose Internet Mail Extensions (MIME) map policy that is configured on the Web server. The page you requested has a file name extension that is not recognized, and is not allowed.
--------------------------------------------------------------------------------------------------------------------
2.การทำงานกับ Microsoft Access และ ASP
เมื่อรันคำสั่ง asp เพื่อดำเนินการกับฐานข้อมูล Micrisift Access
จะพบ Error ดังนี้
--------------------------------------------------------------------------------------------------------------------
Microsoft JET Database Engine error '80004005'
Unspecified error
--------------------------------------------------------------------------------------------------------------------
หากมีความจำเป็นต้องการใช้งานจริงๆก็มีทางออกให้ครับ
โดยการปิด loadUserProfile หรือยินยอมให้โฟลเดอร์ชั่วคราวของ ACL
สามารถทำงานเขียนข้อมูลลงไปได้
ทำโดยการใช้ appcmd สั่งงานลงไป
คำสั่งเพื่อปิด loadUserProfile ,, Default Application
Pool
--------------------------------------------------------
%windir%\system32\inetsrv\appcmd set config
/section:applicationPools
/[name='DefaultAppPool'].processModel.loadUserProfile:false
-----------------------------------------------------------
คำสั่งเพื่อกำหนดสิทธิ์ให้ ACL สามารถอ่านเขียนข้อมูลงไปได้
----------------------------------------------------------
icacls %windir%\serviceprofiles etworkservice\AppData\Local\Temp
/grant Users:(CI)(S,WD,AD,X)
icacls %windir%\serviceprofiles etworkservice\AppData\Local\Temp
/grant "CREATOR OWNER":(OI)(CI)(IO)(F)
-----------------------------------------------------------
3.ยกเลิกการแจ้งหมายเลขข้อผิดพลาดบนเว็บ
Browser
การเขียนคำสั่งผิดพลาด
หรือเกิดข้อผิดพลาดในการเขียนโปรแกรมที่ file asp
จะไม่มีการแจ้งหมายเลขข้อผิดพลาดเหมือนเช่นก่อน
ซึ่งผมเองมองว่าเป็นข้อดี ผู้ใช้หัวหมออาจแอบใช้ข้อผิดพลาด
ในการเจาะระบบได้
แต่หากมีความจำเป็นต้องการแสดงข้อผิดพลาดที่ด้าน web browser
เพื่อเหตุผลด้านการพัฒนาระบบที่ Testing server ไม่ใช่ server
ที่ใช้จริงนะครับ
ก็สามารถแก้ไขได้โดยการระบุคำสั่งลงไปังนี้
-------------------------------------------------------
%windir%\system32\inetsrv\appcmd set config -section:asp
-scriptErrorSentToBrowser:true
-------------------------------------------------------
จากนั้นเมื่อทดลองรันคำสั่ง asp ที่ผิดพลาดอาจพบข้อความดังนี้
--------------------------------------------------------------------------------------------------------------------
Microsoft VBScript compilation error '800a03ea'
Syntax error
/test.asp, line 4
Response.Write("I love classic ASP" && foo)
-------------------------------------^--------------------------------------------------------------------------------------------------------------------
4.iis ตั้งแต่ version 6 - 7 ไม่อนุญาติให้ใช้
Parentpath
หากท่านยังพอจำได้ว่าการอ้างอิง path สามารถระบุคำสั่งใน asp
เพื่อถอยออกมาจาก folder ทีละ 1 ชั้นแล้วเรียกใช้ file ที่ต้องการ
โดยการระบุ "../" หากมี folder หลายชั้นก็ใช้ "../../../abc.asp"
เช่นนี้ หมายถึงถอยออกจาก folder ปัจจุบัน 3 ชั้นแล้วเรียกใช้ file
ชื่อ abc.asp
หากจำเป็นต้องการใช้สามารถแก้ไขได้โดยการ ระบุคำสั่งลงไปดังนี้
-------------------------------------------------------------
%windir%\system32\inetsrv\appcmd set config -section:asp
-enableParentPaths:true
-------------------------------------------------------------
ไม่ยากใช่ใหมครับ แต่ก็อย่าลืม Backup
ระบบและข้อมูลเอาไว้ก่อนนะครับ
Good night ครับ
Enjoy your Development !!!
อ้างอิงจาก http://blogs.iis.net/bills/archive/2007/05/21/tips-for-classic-asp-developers-on-iis7.aspx
ขอบคุณมาก ๆ ครับ
ด้วยความยินดีคับ
ขอคุณมากครับ หามานานแล้ว
%windir%\system32\inetsrv\appcmd set config -section:asp -enableParentPaths:true
ที่ทำให้ #include file="../file.asp" ผมใช้งานไม่ได้ เพราะเหตุนี้เอง