เราได้ดูวงจรชีวิตของเพจแล้ว และวิธีที่เพจจะมีการควบคุมที่แตกต่างกันได้อย่างไร เพจนั้นถูกสร้างอินสแตนซ์เป็นออบเจ็กต์ควบคุม เว็บฟอร์มทั้งหมดนั้นเป็นอินสแตนซ์ของคลาสเพจ ASP.NET คลาสเพจมีคุณสมบัติที่เป็นประโยชน์อย่างยิ่งดังต่อไปนี้ ซึ่งสอดคล้องกับออบเจ็กต์ภายใน:
การประชุม
แอป
แคช
ถาม
การตอบสนอง
เซิร์ฟเวอร์
ผู้ใช้
ติดตาม
เราจะหารือเกี่ยวกับแต่ละวัตถุในเวลาที่เหมาะสม ในบทช่วยสอนนี้ เราจะสำรวจวัตถุเซิร์ฟเวอร์ วัตถุคำขอ และวัตถุการตอบสนอง
วัตถุเซิร์ฟเวอร์ใน ASP.NET เป็นอินสแตนซ์ของคลาส System.Web.HttpServerUtility คลาส HttpServerUtility มีคุณสมบัติและวิธีการจำนวนมากเพื่อดำเนินงานที่แตกต่างกัน
วิธีการและคุณสมบัติของคลาส HttpServerUtility จะถูกเปิดเผยผ่านวัตถุเซิร์ฟเวอร์ภายในที่ ASP.NET จัดเตรียมไว้
ตารางต่อไปนี้แสดงชุดคุณสมบัติของคลาส HttpServerUtility
คุณสมบัติ | อธิบาย |
---|---|
ชื่อเครื่อง | ชื่อคอมพิวเตอร์เซิร์ฟเวอร์ |
สคริปต์TimeOut | รับและตั้งค่าของการหมดเวลาของคำขอเป็นวินาที |
ตารางต่อไปนี้แสดงวิธีการที่สำคัญบางประการ:
วิธี | อธิบาย |
---|---|
CreateObject (สตริง) | สร้างอินสแตนซ์ของวัตถุ COM ซึ่งตรวจสอบโดย ProgID |
CreateObject(ชนิด) | สร้างอินสแตนซ์ของวัตถุ COM ตรวจสอบตามประเภท |
เท่ากับ(วัตถุ) | ตรวจสอบว่าวัตถุเฉพาะสอดคล้องกับวัตถุที่มีอยู่หรือไม่ |
ดำเนินการ (สตริง) | ดำเนินการเส้นทางเสมือนที่ระบุโดยแอปพลิเคชันที่กำลังประมวลผลในบริบทของคำขอปัจจุบัน |
ดำเนินการ (สตริง, บูลีน) | ดำเนินการเส้นทางเสมือนที่ระบุโดยตัวจัดการในบริบทของคำขอปัจจุบัน โดยระบุว่าจะล้างคอลเลกชัน QueryString และแบบฟอร์มหรือไม่ |
GetLastError | ส่งคืนข้อยกเว้นก่อนหน้า |
รับประเภท | รับประเภทของอินสแตนซ์ที่มีอยู่ |
HtmlEncode | แปลงสตริงธรรมดาให้เป็นสตริง HTML ทางกฎหมาย |
HtmlDecode | แปลงสตริง Html ให้เป็นสตริงธรรมดา |
ToString | ส่งกลับสตริงที่เป็นตัวแทนของวัตถุปัจจุบัน |
โอน(สตริง) | สำหรับคำขอปัจจุบัน ให้ยุติการดำเนินการของเพจปัจจุบัน และเริ่มการดำเนินการของเพจใหม่โดยการระบุเส้นทาง URL ของเพจ |
UrlDecode | แปลงสตริง URL ให้เป็นสตริงปกติ |
UrlEncodeToken | เหมือนกับ UrlEncode แต่มีข้อมูลที่เข้ารหัส Base64 ในอาร์เรย์ไบต์ |
UrlDecodeToken | ทำงานเหมือนกับ UrlDecode แต่มีข้อมูลที่เข้ารหัส Base64 ในอาร์เรย์ไบต์ |
MapPath | ส่งกลับเส้นทางทางกายภาพที่สอดคล้องกับเส้นทางของไฟล์บนเซิร์ฟเวอร์เสมือนที่ระบุ |
โอนย้าย | ถ่ายโอนการดำเนินการบนแอปพลิเคชันปัจจุบันไปยังหน้าเว็บอื่น |
วัตถุคำขอเป็นอินสแตนซ์ของคลาส System.Web.HttpRequest แสดงถึงค่าและคุณลักษณะของคำขอ HTTP ที่ทำให้สามารถโหลดหน้าเว็บลงในเบราว์เซอร์ได้
ข้อมูลที่นำเสนอโดยออบเจ็กต์นี้ถูกห่อหุ้มไว้ในนามธรรมระดับที่สูงกว่า (โมเดลการควบคุมเว็บ) อย่างไรก็ตาม ออบเจ็กต์นี้สามารถช่วยตรวจสอบข้อมูลบางอย่างได้ เช่น เบราว์เซอร์ไคลเอ็นต์และคุกกี้
ตารางต่อไปนี้มีคุณสมบัติที่สำคัญบางประการของออบเจ็กต์คำขอ:
คุณสมบัติ | อธิบาย |
---|---|
ยอมรับประเภท | รับอาร์เรย์สตริงของประเภท MIME ที่ผู้ใช้ยอมรับ |
ApplicationPath | รับเส้นทางรูทของแอปพลิเคชันจริงของแอปพลิเคชัน ASP.NET บนเซิร์ฟเวอร์ |
เบราว์เซอร์ | รับหรือตั้งค่าข้อมูลเกี่ยวกับความสามารถของเบราว์เซอร์ของผู้ใช้ที่ร้องขอ |
การเข้ารหัสเนื้อหา | รับหรือตั้งค่าเอนทิตีชุดอักขระ |
เนื้อหาความยาว | ระบุความยาวเป็นไบต์ของเนื้อหาที่ไคลเอ็นต์ส่ง |
ประเภทเนื้อหา | รับหรือตั้งค่าประเภทเนื้อหา MIME ของคำขอที่เข้ามา |
คุกกี้ | รับชุดคุกกี้ที่ลูกค้าส่งมา |
FilePath | รับเส้นทางที่แท้จริงของคำขอปัจจุบัน |
ไฟล์ | รับชุดของไฟล์ที่ไคลเอ็นต์อัปโหลดในรูปแบบ MIME หลายส่วน |
รูปร่าง | รับชุดของตัวแปรแบบฟอร์ม |
ส่วนหัว | รับชุดส่วนหัว HTTP |
HttpMethod | รับวิธีการถ่ายโอนข้อมูล HTTP ที่ผู้ใช้ใช้ (เช่น GET, POST หรือ HEAD) |
อินพุตสตรีม | รับเนื้อหาเอนทิตีของ HTTP ขาเข้า |
คือการเชื่อมต่อที่ปลอดภัย | รับค่าที่ระบุว่าการเชื่อมต่อ HTTP ใช้ซ็อกเก็ตที่ปลอดภัย (นั่นคือ HTTPS) |
QueryString | รับชุดตัวแปรสตริงการสืบค้น HTTP |
RawUrl | รับ URL ดั้งเดิมของคำขอปัจจุบัน |
ประเภทคำขอ | รับหรือตั้งค่าวิธีการถ่ายโอนข้อมูล HTTP (GET หรือ POST) ที่ผู้ใช้ใช้ |
ตัวแปรเซิร์ฟเวอร์ | รับชุดของตัวแปรเว็บเซิร์ฟเวอร์ |
จำนวนไบต์ทั้งหมด | รับจำนวนไบต์ของสตรีมอินพุตที่มีอยู่ |
URL | รับข้อมูลเกี่ยวกับ URL ที่ร้องขอที่มีอยู่ |
URL ผู้อ้างอิง | รับข้อมูล URL เกี่ยวกับคำขอก่อนหน้าของลูกค้าที่เชื่อมโยงกับ URL ที่มีอยู่ |
UserAgent | รับสตริงตัวแทนผู้ใช้ดั้งเดิมของเบราว์เซอร์ไคลเอ็นต์ |
UserHostAddress | รับที่อยู่โฮสต์ IP ของไคลเอ็นต์ระยะไกล |
UserHostName | รับชื่อ DNS ของไคลเอ็นต์ระยะไกล |
ภาษาของผู้ใช้ | รับอาร์เรย์สตริงที่เรียงลำดับของการตั้งค่าภาษาไคลเอ็นต์ |
ตารางต่อไปนี้แสดงวิธีการที่สำคัญบางประการ:
วิธี | อธิบาย |
---|---|
ไบนารีอ่าน | ดำเนินการอ่านไบนารีของจำนวนไบต์ที่ระบุจากสตรีมอินพุตปัจจุบัน |
เท่ากับ(วัตถุ) | กำหนดว่าวัตถุที่ระบุเทียบเท่ากับวัตถุที่มีอยู่หรือไม่ (สืบทอดมาจากวัตถุ) |
รับประเภท | รับประเภทของอินสแตนซ์ที่มีอยู่ |
MapImageCoordinates | วาดพารามิเตอร์ฟอร์มฟิลด์รูปภาพขาเข้าให้เป็นค่าพิกัด x และ y ที่เหมาะสม |
MapPath(สตริง) | วาดเส้นทางจริงที่ระบุลงในเส้นทางทางกายภาพ |
บันทึกเป็น | เก็บไว้ในดิสก์เป็นคำขอ HTTP |
ToString | ส่งกลับสตริงที่เป็นตัวแทนของวัตถุที่มีอยู่ |
ตรวจสอบอินพุต | ทำให้การตรวจสอบเกิดขึ้นโดยการเข้าถึงคอลเลกชันของคุกกี้ แบบฟอร์ม และคุณสมบัติ QueryString |
วัตถุตอบสนองแสดงถึงการตอบสนองของเซิร์ฟเวอร์ต่อคำขอของผู้ใช้ เป็นอินสแตนซ์ของคลาส System.Web.HttpResponse
ใน ASP.NET วัตถุตอบสนองไม่มีบทบาทสำคัญในการส่งข้อความ HTML ไปยังผู้ใช้ เนื่องจากตัวควบคุมฝั่งเซิร์ฟเวอร์มีวิธีการเชิงวัตถุที่ซ้อนกันสำหรับการแสดงผลด้วยตนเอง
อย่างไรก็ตาม ออบเจ็กต์ HttpResponse มีฟังก์ชันการทำงานที่สำคัญบางอย่าง เช่น ลักษณะคุกกี้และเมธอด Redirect() เมธอด Response.Redirect() อนุญาตให้ผู้ใช้ถ่ายโอนไปยังเพจอื่น ไม่ว่าจะภายในแอปพลิเคชันหรือภายนอกแอปพลิเคชัน มันต้องมีกระบวนการไปกลับ
ตารางต่อไปนี้แสดงคุณสมบัติที่น่าสังเกตของออบเจ็กต์การตอบสนอง:
คุณสมบัติ | อธิบาย |
---|---|
บัฟเฟอร์ | รับหรือตั้งค่าที่ระบุว่าเอาต์พุตถูกบัฟเฟอร์และส่งหลังจากการตอบกลับที่สมบูรณ์เสร็จสิ้นแล้วหรือไม่ |
บัฟเฟอร์เอาท์พุต | รับหรือตั้งค่าที่ระบุว่าเอาต์พุตถูกบัฟเฟอร์และส่งหลังจากเสร็จสิ้นเพจทั้งหมดแล้วหรือไม่ |
ชาร์เซ็ท | รับหรือตั้งค่าชุดอักขระ HTTP ของสตรีมเอาต์พุต |
การเข้ารหัสเนื้อหา | รับหรือตั้งค่าชุดอักขระ HTTP ของสตรีมเอาต์พุต |
ประเภทเนื้อหา | รับหรือตั้งค่าประเภท HTTP MIME ของสตรีมเอาต์พุต |
คุกกี้ | รับคอลเลกชันคุกกี้ที่เกี่ยวข้อง |
หมดอายุ | รับหรือตั้งค่าจำนวนนาทีก่อนที่เพจแคชบนเบราว์เซอร์จะหมดอายุ |
หมดอายุแน่นอน | รับหรือตั้งค่าวันที่และเวลาที่แน่นอนซึ่งข้อมูลแคชจะถูกลบออกจากแคช |
การเข้ารหัสส่วนหัว | รับหรือตั้งค่าออบเจ็กต์การเข้ารหัสที่แสดงถึงการเข้ารหัสของสตรีมเอาต์พุตส่วนหัวที่มีอยู่ |
ส่วนหัว | รับชุดส่วนหัวการตอบกลับ |
IsClientConnected แล้ว | รับค่าที่ระบุว่าผู้ใช้ยังคงเชื่อมต่อกับเซิร์ฟเวอร์หรือไม่ |
เอาท์พุต | ทำให้ข้อความเอาต์พุตถูกเอาต์พุตไปยังสตรีมการตอบสนอง HTTP |
เอาท์พุตสตรีม | เปิดใช้งานเอาต์พุตไบนารีไปยังเนื้อหาเนื้อหา HTTP ของเอาต์พุต |
เปลี่ยนเส้นทางตำแหน่ง | รับหรือตั้งค่าของตำแหน่งส่วนหัว Http |
สถานะ | ตั้งค่าแถบสถานะและส่งคืนให้กับลูกค้า |
รหัสสถานะ | รับหรือตั้งค่ารหัสสถานะเอาต์พุต HTTP ที่ส่งคืนไปยังไคลเอนต์ |
คำอธิบายสถานะ | รับหรือตั้งค่าสตริงสถานะเอาต์พุต HTTP ที่ส่งคืนไปยังไคลเอนต์ |
รหัสสถานะย่อย | รับหรือตั้งค่าที่จำกัดรหัสสถานะการตอบสนอง |
ระงับเนื้อหา | รับหรือตั้งค่าที่ระบุว่าจะส่งเนื้อหา HTTP ไปยังไคลเอนต์หรือไม่ |
ตารางต่อไปนี้แสดงวิธีการที่สำคัญบางประการ:
วิธี | อธิบาย |
---|---|
เพิ่มส่วนหัว | เพิ่มส่วนหัว HTTP ให้กับสตรีมเอาต์พุต AddHeader มีไว้เพื่อให้เข้ากันได้กับ ASP เวอร์ชันก่อนหน้า |
ผนวกCookie | โครงสร้างพื้นฐานเพิ่มคุกกี้ HTTP ให้กับคอลเลกชันคุกกี้ภายใน |
ผนวกHeader | เพิ่มส่วนหัว HTTP ให้กับสตรีมเอาต์พุต |
ผนวกToLog | เพิ่มข้อมูลบันทึกแบบกำหนดเองลงในไฟล์บันทึกของบริการข้อมูลทางอินเทอร์เน็ต (IIS) |
ไบนารีเขียน | เขียนสตริงอักขระไบนารีไปยังสตรีมเอาต์พุต HTTP |
ล้างเนื้อหา | ล้างเอาต์พุตทั้งหมดจากสตรีมที่บัฟเฟอร์ |
ปิด | ปิดซ็อกเก็ตไคลเอ็นต์ |
จบ | ส่งเอาต์พุตบัฟเฟอร์ที่มีอยู่ทั้งหมดไปยังไคลเอนต์ หยุดการดำเนินการเพจ และเพิ่มเหตุการณ์ EndRequest |
เท่ากับ(วัตถุ) | กำหนดว่าวัตถุที่ระบุเทียบเท่ากับวัตถุที่มีอยู่หรือไม่ |
ฟลัช | ส่งเอาต์พุตบัฟเฟอร์ที่มีอยู่ทั้งหมดไปยังไคลเอนต์ |
รับประเภท | รับประเภทของอินสแตนซ์ที่มีอยู่ |
ภาพ | ผนวกส่วนหัว HTTP PICS-Label เข้ากับสตรีมเอาต์พุต |
เปลี่ยนเส้นทาง (สตริง) | เปลี่ยนเส้นทางคำขอไปยัง URL ใหม่และระบุ URL ใหม่ |
เปลี่ยนเส้นทาง (สตริง, บูลีน) | เปลี่ยนเส้นทางไคลเอ็นต์ไปยัง URL ใหม่ ระบุ URL ใหม่และหน้าที่มีอยู่ควรถูกยกเลิกหรือไม่ |
ตั้งค่าคุกกี้ | อัปเดตคุกกี้ที่มีอยู่ในคอลเลกชันคุกกี้ |
ToString | ส่งกลับสตริงที่เป็นตัวแทนของวัตถุที่มีอยู่ |
ส่งไฟล์ (สตริง) | เขียนไฟล์ที่ระบุโดยตรงไปยังสตรีมเอาท์พุตการตอบสนอง HTTP โดยไม่ต้องบัฟเฟอร์ในหน่วยความจำ |
เขียน(ถ่าน) | เขียนอักขระไปยังสตรีมเอาท์พุตการตอบสนอง HTTP |
เขียน(วัตถุ) | เขียนวัตถุลงในสตรีมการตอบสนอง HTTP |
เขียน (สตริง) | เขียนสตริงไปยังสตรีมเอาต์พุตการตอบสนอง HTTP |
เขียนไฟล์(สตริง) | เขียนเนื้อหาของไฟล์ที่ระบุโดยตรงไปยังสตรีมเอาท์พุตการตอบสนอง HTTP ในรูปแบบบล็อกไฟล์ |
WriteFile (สตริง, บูลีน) | เขียนเนื้อหาของไฟล์ที่ระบุโดยตรงไปยังสตรีมเอาท์พุตการตอบสนอง HTTP เป็นบล็อกหน่วยความจำ |
ตัวอย่างง่ายๆ ต่อไปนี้มีตัวควบคุมกล่องข้อความที่อนุญาตให้ผู้ใช้ป้อนชื่อ ปุ่มที่ส่งข้อมูลไปยังเซิร์ฟเวอร์ และตัวควบคุมป้ายชื่อที่แสดง URL ของคอมพิวเตอร์ไคลเอนต์
ไฟล์เนื้อหา:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="server_side._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> Enter your name: <br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" /> <br /> <asp:Label ID="Label1" runat="server"/> </div> </form> </body></html>
รหัส Button1_คลิกหลังจากคลิก:
protected void Button1_Click(object sender, EventArgs e) { if (!String.IsNullOrEmpty(TextBox1.Text)) { // Access the HttpServerUtility methods through // the intrinsic Server object. Label1.Text = "Welcome, " + Server.HtmlEncode(TextBox1.Text) + ". <br/> The url is " + Server.UrlEncode(Request.Url.ToString()) }}
เรียกใช้เพจเพื่อดูผลลัพธ์ต่อไปนี้: