Seek & Advice :: สิ่งที่คุณต้องรู้ของ IIS 7 กับ asp classic


มารอบนี้ผมนำเรื่องแนว Develop มานะครับ อาจจะอ่านไม่เข้าใจ ก็ไม่แปลก หากท่านไม่ได้ทำงานในด้านเฉพาะนี้

สวัสดีครับทุกท่าน หายไปสักพักเห็นจะได้
ยังไม่เลิกเขียนนะครับ เรื่องดีๆไม่เลิกคิด พูด ทำครับ
หายไปเขียนคู่มือโปรแกรม 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

 

คำสำคัญ (Tags): #iis#microsoft#web application#web server#asp
หมายเลขบันทึก: 170209เขียนเมื่อ 10 มีนาคม 2008 22:42 น. ()แก้ไขเมื่อ 23 มิถุนายน 2012 18:59 น. ()สัญญาอนุญาต: สงวนสิทธิ์ทุกประการจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (5)

ขอคุณมากครับ หามานานแล้ว

%windir%\system32\inetsrv\appcmd set config -section:asp -enableParentPaths:true

ที่ทำให้ #include file="../file.asp" ผมใช้งานไม่ได้ เพราะเหตุนี้เอง

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท