การทำงานกับทรัพยากรบนเว็บใน ASP.NET 2.0

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 910442 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
คอลัมน์เสียงสนับสนุน ASP.NET

การทำงานกับทรัพยากรบนเว็บใน ASP.NET 2.0

เมื่อต้องกำหนดคอลัมน์นี้ให้ตรงกับความต้องการของคุณ เราขอให้คุณส่งแนวคิดของคุณเกี่ยวกับหัวข้อที่สนใจและปัญหาที่คุณต้องการดูในบทความฐานความรู้และคอลัมน์เสียงสนับสนุนในอนาคต คุณสามารถส่งของแนวคิดและการใช้ผลป้อนกลับ ขอดังกล่าว แบบฟอร์ม นอกจากนี้ยังมีการเชื่อมโยงไปยังแบบฟอร์มที่ด้านล่างของคอลัมน์นี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

คำแนะนำ

คะ ชื่อของฉันคือ Praveen Yerneni และผม/ดิฉันที่ทำงานด้านเทคนิคของลูกค้าเป้าหมาย มีกลุ่มสนับสนุน ASP.NET ที่ Microsoft ในคอลัมน์ของเดือนนี้ ฉันกำลังไป เมื่อต้องการอธิบายทรัพยากรบนเว็บและวิธีมาตรฐานในของคุณ แอพลิเคชัน

ถ้าคุณเป็นนักพัฒนาที่ทำงานอย่างแพร่หลายกับ COM ควบคุม คุณอาจพบบทความนี้มีประโยชน์ในการดำเนินการแก้ไขบางส่วนของคีย์ ปัญหาที่คุณอาจเผชิญในขณะที่การพัฒนาตัวควบคุม ก่อนหน้านี้ ใน Microsoft ASP.NET 1.1 ถ้าคุณต้องการปรับใช้แฟ้มแบบคงที่เช่นแฟ้ม.html, .css แฟ้ม แฟ้มภาพ และแฟ้มสคริปต์ โดยใช้ตัวควบคุม COM คุณจะต้องสร้าง การติดตั้งและกลุ่มแฟ้มเหล่านี้ร่วมกับ COM ควบคุม ถึงแม้ว่า ซึ่งทำงาน จะแสดงปัญหาหลายประการในขณะที่การปรับใช้ตัวควบคุม สำหรับ ตัวอย่าง คุณอาจมีปัญหาเกี่ยวกับความขัดแย้งรุ่น กับการทำให้แน่ใจว่า ว่า แฟ้มเช่นรูปได้ถูกจัดวางตำแหน่งที่ตั้งเดียวกัน หรือมีความเสียหาย หรือแฟ้มแบบคงถูกลบซึ่งอาจก่อให้เกิดการควบคุมล้มเหลว

เว็บ ทรัพยากรที่อยู่ใน Microsoft ASP.NET 2.0 เน้นปัญหาเหล่านี้ โดยให้การ นักพัฒนาฝังทรัพยากรเหล่านี้ในแอสเซมบลีเป็น.resources ในการเข้าถึงเหล่านี้ ทรัพยากรแบบคง คุณสามารถเพียงแค่เรียกวิธีการในตัวควบคุม รหัส

วิธีการทำงานของทรัพยากรบนเว็บ

ทรัพยากรบนเว็บโดยอาศัยตัวจัดการพิเศษที่ชื่อ WebResource.axd ซึ่งถูกออกแบบมาเพื่อเรียกใช้แอสเซมบลีทรัพยากร และการให้บริการ เหล่านั้นไปยังเว็บเบราว์เซอร์ ชนิดตัวจัดการสำหรับ WebResource.axd เป็นAssemblyResourceLoader

เมื่อการร้องขอมาในไคลเอนต์สำหรับ WebResource.axd ตัวจัดการที่ค้นหาตัวระบุทรัพยากรบนเว็บในวิธีการคุณลักษณะของวัตถุร้องขอ ขึ้นอยู่กับค่าของตัวระบุทรัพยากรบนเว็บ การ ตัวจัดการแล้วพยายามโหลดแอสเซมบลีที่ประกอบด้วยทรัพยากรนี้ ถ้านี้ การดำเนินงานประสบความสำเร็จ ตัวจัดการจะแล้วมีการค้นหาสำหรับแอตทริบิวต์ของแอสเซมบลี และโหลดสตรีมทรัพยากรจากแอสเซมบลี ในตอนท้าย ตัวจัดการจะสรุปคือ ข้อมูลจากทรัพยากรการส่งกระแสข้อมูล และส่งไปยังไคลเอ็นต์ร่วมกับการ ชนิดของเนื้อหาที่คุณระบุในแอตทริบิวต์ของแอสเซมบลี

URL สำหรับ WebResource.axd มีลักษณะดังต่อไปนี้:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
รูปแบบของ URL นี้คือ WebResource.axd?d=การเข้ารหัสลับ ตัวระบุ& t =ค่าการประทับเวลา. ที่ "d" หมายถึงทรัพยากรที่ร้องขอบนเว็บ ตัว "t" คือ เวลาสำหรับการ ส่วนที่ร้องขอประกอบ ซึ่งสามารถช่วยในการกำหนดถ้ามีการใด ๆ การเปลี่ยนแปลงทรัพยากร

Delving เข้ารหัส

ในตัวอย่างของฉัน ฉันได้พัฒนาตัวควบคุม COM ที่มีใช้งานด้วย โปรแกรมประยุกต์ ASP.NET เว็บเพื่อแสดงให้เห็นถึงลักษณะการทำงานใหม่นี้

ตัวควบคุม COM สำหรับทรัพยากรบนเว็บ

สำหรับการสร้าง และการฝังทรัพยากรบนเว็บ ฉันได้พัฒนาแบบ COM ควบคุม (SimpleControl) มีทรัพยากรฝังตัวต่อไปนี้:
  • สองรูปแฟ้มที่มีชื่อว่า smallFail.gif และ แฟ้มรูปภาพเหล่านี้จะใช้สำหรับลักษณะโรลโอเวอร์ใน smallSuccess.gif ตัวควบคุมและถูกใช้ภายในรหัสควบคุม
  • แฟ้ม HTML ที่ชื่อ Help.htm ไม่มีแฟ้มนี้ ประกอบด้วยข้อความมากน้อยเพียงใด และมีไว้สำหรับการสาธิต
  • แฟ้ม JavaScript หนึ่งที่ชื่อ MyScript.js แฟ้มนี้ ประกอบด้วยบางรหัส JavaScript ซึ่งนอกจากนี้ยัง อธิบายเกี่ยวกับลักษณะการทำงานของการทดแทน เมื่อต้องการได้รับการอ้างอิงไปยังทรัพยากรที่ฝังตัวอื่นภายในที่เดียวกัน แอสเซมบลี
  • แฟ้ม.css หนึ่งที่ชื่อ MyStyleSheet.css ลักษณะนี้ จากนั้นมีใช้แผ่นโดยตรงจากแอพลิเคชันเว็บ ASP.NET
ในบทความนี้ ฉันจะอธิบายส่วนต่าง ๆ ที่จำเป็นสำหรับ ทรัพยากรบนเว็บ
การฝังทรัพยากรบนเว็บ
ครั้งแรก คุณจำเป็นต้องตรวจสอบให้แน่ใจว่า แฟ้มแบบคงที่ทั้งหมดที่มี เพิ่มลงในไลบรารีตัวควบคุมเว็บมีโครงการใน Microsoft Visual Studio 2005 ทรัพยากรที่ฝังตัว เมื่อต้องการฝังทรัพยากรเหล่านี้ ทั้งหมดที่คุณต้องทำคือเพิ่ม แฟ้มเหล่านี้ไปยัง Visual Studio แล้ว ปรับเปลี่ยนคุณสมบัติของแฟ้มเหล่านี้ดังนั้น ว่า การดำเนินการสร้างถูกต้อง ฝังตัว ทรัพยากร.

หลังจากที่คุณทำเช่นนี้ คุณต้องทำ ดูให้แน่ใจว่า มีการอ้าง โดยแอสเซมบลีมุมแอตทริบิวต์ในแฟ้ม AssemblyInfo.cs ทรัพยากรเหล่านี้ไว้ดังแสดงด้านล่าง
[assembly: WebResource("SimpleControl.Help.htm", "text/html")]
[assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]

แอตทริบิวต์ของแอสเซมบลีมุมมีพารามิเตอร์ที่สามเป็นดังนี้:
  • ทรัพยากรบนเว็บ: ชื่อของทรัพยากรที่ถูกฝังอยู่ในแอสเซมบลี
  • ContentType: ชนิดของแฟ้มแบบ MIME สำหรับทรัพยากร
  • PerformSubstitution: ค่าบูลีนที่เป็นตัวกำหนดว่า Url อื่น ๆ ทรัพยากรเว็บ ที่ถูกอ้างอิงในทรัพยากรนี้ถูกแยกวิเคราะห์ และถูกแทนที่ ด้วยเส้นทางแบบเต็ม ของทรัพยากร
กำลังฟื้นฟูทรัพยากรบนเว็บ
สำหรับการเรียกดูทรัพยากรบนเว็บ ฉันได้ใช้GetWebResourceUrlวิธีการ ซึ่งเป็นวิธีการคลาสClientScriptManagerซึ่งโดยปกติจะใช้สำหรับสคริปต์ฝั่งไคลเอ็นต์การจัดการ วิธีการนี้ส่งกลับการอ้างอิง URL ไปยังทรัพยากรของฝั่งเซิร์ฟเวอร์ที่มี ฝังอยู่ในแอสเซมบลี วิธีการGetWebResourceUrlยอมรับพารามิเตอร์สองต่อไปนี้:
  • ชนิด: ชนิดของทรัพยากรฝั่งเซิร์ฟเวอร์
  • ชื่อของทรัพยากร: ชื่อของทรัพยากรบนฝั่งเซิร์ฟเวอร์
เมื่อต้องการใช้วิธีนี้ ครั้งแรกคุณจำเป็นต้องสร้างอินสแตนซ์ของคลาClientScriptManagerและได้รับชนิดของคลาสดังแสดงด้านล่าง
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

เมื่อคุณมีอินสแตนซ์ของคลาสนี้ คุณแล้วมีการเรียกนี้ วิธีการส่งผ่านพารามิเตอร์เหมาะสมตามที่แสดงอยู่ด้านล่าง ที่ฉันสร้างปุ่มเชื่อมโยงหลายมิติและตั้งค่าวิธีการNavigateURLให้ชี้ไปทรัพยากร HTML ฝังตัว
HyperLink hlHelpFile = new HyperLink();
            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
            hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
            hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");
            
            this.Controls.Add(hlHelpFile);

            Image imgTest = new Image();
            imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
            imgTest.ID = "image1";
            hlHelpFile.Controls.Add(imgTest);

นอกจากนี้ ในรหัสเดียวกันกับรายการข้างบน ฉันได้สร้างปุ่มรูปแบบ และแอตทริบิวต์ImageUrlจะรับค่าจากรูป.gif ฝังตัวอื่น ทรัพยากร
ใช้ลักษณะการทำงานของการทดแทน
คุณลักษณะที่มีประโยชน์อื่นของการใช้ทรัพยากรบนเว็บเป็นคุณสมบัติPerformSubstitutionของแอตทริบิวต์มุมดังที่แสดงไว้ในส่วน "การฝังตัวทรัพยากรบนเว็บ" ข้างต้น คุณลักษณะนี้ช่วยให้คุณอย่างแท้จริง ได้รับทรัพยากรเว็บอื่นฝังอยู่ภายใน ทรัพยากร ถ้าเปิดใช้งานคุณสมบัตินี้ ตัวจัดการมุมจะแยกทรัพยากรฝังตัว และแทนไวยากรณ์ สำหรับแอตทริบิวต์ของแอสเซมบลีมุมด้วยทรัพยากรที่เกิดขึ้นจริงก่อนที่จะตั้งตัว หน้า

ในรหัสข้างต้น คุณจะสังเกตเห็นว่า ตัวควบคุมเชื่อมโยงหลายมิติมีเหตุการณ์ที่ฝั่งไคลเอ็นต์ที่ชื่อChangeImage ฟังก์ชันChangeImageนี้จะอยู่ในแฟ้มสคริปต์ ต่อไปนี้เป็นรหัส สำหรับสคริปต์นี้
function ChangeImage(imgControl,varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
    document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
   document.getElementById('Label1').style.color = varcolor;
}
นอกจากนี้ยังมีนี้แฟ้มสคริปต์ที่ชื่อ MyScript.js ทรัพยากรฝังตัว ในตัวควบคุม COM เดียวกัน และสังเกตว่า ฉันใช้วิธีมุมเพื่ออ้างอิงไปยังทรัพยากรที่ฝังตัวอื่นในสคริปต์ แฟ้ม

นอกจากนี้ เพื่อให้แน่ใจว่า แฟ้ม JavaScript นี้ถูกลงทะเบียนใน หน้า ฉันใช้RegisterClientScriptIncludeเมธอดของคลาClientScriptManagerดังแสดงด้านล่าง
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

ใช้ตัวควบคุมใน ASP.NET

เมื่อคุณได้สร้างตัวควบคุม COM เรียบร้อยแล้ว คุณจะต้อง ใช้ตัวควบคุมนี้ในโครงการ ASP.NET ไคลเอ็นต์ เมื่อต้องการทำเช่นนี้ คุณเพียงแค่ต้อง เพิ่มตัวควบคุมลงในกล่องเครื่องมือใน ASP.NET จากนั้น คุณสามารถเพิ่มตัวควบคุมใด ๆ แบบฟอร์มเว็บในโปรแกรมออกแบบ

เมื่อคุณเพิ่มตัวควบคุมลงในกล่องเครื่องมือ การ มีการลงทะเบียนตัวควบคุมของคุณ และเพิ่มรหัสต่อไปนี้เมื่อคุณดูที่ ไวยากรณ์ HTML
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
ในตัวควบคุม COM ของฉัน ฉันได้นอกจากนี้ฝังไฟล์สไตล์ชี ซึ่งฉันจะ คุณสามารถใช้ในโปรแกรมประยุกต์ ASP.NET ของฉัน ในการเข้าถึงแผ่นงานลักษณะนี้ คุณจะต้องเพิ่ม เชื่อมโยงแบบHtmlControlในเพจ HTML และตั้งค่าคุณสมบัติrunatไปยังเซิร์ฟเวอร์เป็นที่แสดงด้านล่าง
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
หลังจากนี้ คุณสามารถตั้งค่าแอตทริบิวต์Hrefของตัวควบคุมนี้เพื่อชี้ไปยังแอตทริบิวต์ของแอสเซมบลีมุมในเหตุการณ์Page_Loadดังแสดงด้านล่างโดยทางโปรแกรม
protected void Page_Load(object sender, EventArgs e)
    {
        //Get the name of the Web Resource.
        String rsname = "SimpleControl.MyStyleSheet.css";
        
        //Get the type of the class.
        Type rstype = typeof(SimpleControl.MSButton);

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;
        lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
     }

เมื่อคุณเรียกใช้รหัส คุณจะเห็นตัวควบคุมที่มีลักษณะดังนี้ ต่อไปนี้:
ยุบรูปภาพนี้ขยายรูปภาพนี้
 ล้มเหลวขนาดเล็ก
และบนเมาส์เหนือ ตัวควบคุมจะมีลักษณะดังต่อไปนี้:
ยุบรูปภาพนี้ขยายรูปภาพนี้
 ความสำเร็จเล็ก ๆ
เมื่อคุณคลิกการเชื่อมโยงนี้ ก็จะนำคุณไปหน้าวิธีใช้ ซึ่ง มีการฝังตัวในแฟ้มแอสเซมบลีตัวควบคุม COM

บทสรุป

ทรัพยากรบนเว็บมีคุณลักษณะใหม่มีประโยชน์ใน ASP.NET 2.0 คุณสามารถใช้ คุณลักษณะนี้เพื่อประโยชน์ของคุณถ้าคุณใช้ wisely เทคนิคมากมายที่แคช ถูกนำมาใช้เพื่อให้แน่ใจว่า ทรัพยากรบนเว็บไม่มีผลต่อประสิทธิภาพการทำงานของ แอพลิเคชัน

ใน ASP.NET 2.0, WebResource.axd ถูกใช้ภายในโดย Microsoft .NET Framework เพื่อดึงทรัพยากรที่ฝังตัว ตัวอย่างเช่น การ .NET framework ใช้ WebResource.axd เพื่อเรียกใช้สคริปต์ WebUIValidation.js แฟ้มที่ใช้ สำหรับการตรวจสอบควบคุม และ การเรียกใช้แฟ้มสคริปต์ Menu.js ตัวควบคุมเมนู

การอ้างอิง

สำหรับข้อมูลเพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ Microsoft:
วิธีการ ClientScriptManager.GetWebResourceUrl
http://msdn2.microsoft.com/en-us/library(d=robot) /system.web.ui.clientscriptmanager.getwebresourceurl.aspx

คลาส WebResourceAttribute
http://msdn2.microsoft.com/en-us/library(d=robot) /system.web.ui.webresourceattribute.aspx

เชื่อมโยงเปรียบเทียบกับทรัพยากรที่ฝังตัว
http://msdn2.microsoft.com/en-us/library/ht9h2dk8.aspx
เสมอ คุณสามารถส่งความคิดเห็นในหัวข้อที่คุณต้องการ ได้รับการจัดการ ในอนาคตคอลัมน์ หรือ ในฐานข้อมูลองค์ความรู้ใช้ใน ขอดังกล่าว แบบฟอร์ม

คุณสมบัติ

หมายเลขบทความ (Article ID): 910442 - รีวิวครั้งสุดท้าย: 30 เมษายน 2556 - Revision: 11.0
ใช้กับ
  • Microsoft ASP.NET 2.0
Keywords: 
kbhowto kbasp kbmt KB910442 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:910442
การปฏิเสธความรับผิดชอบในเนื้อหาของ KB ที่จะไม่มีการปรับปรุงอีกต่อไป
บทความนี้กล่าวถึงผลิตภัณฑ์ที่ Microsoft ไม่มีการสนับสนุนอีกต่อไป เนื้อหาของบทความจึงมีการนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com