成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解ASP.NET頁面的aspx擴展

開發(fā) 后端
在這里我們要探討一下ASP.NET頁面的aspx擴展,希望通過本文能對大家了解頁面運行原理有所幫助。

我們通過本文要談?wù)凙SP.NET頁面的aspx擴展,主要是為了網(wǎng)站業(yè)務(wù)上的擴展,保持兩個網(wǎng)站圖片內(nèi)容同步。希望本文能對大家有所幫助。

需求:某網(wǎng)站因業(yè)務(wù)擴展,需拆分出另一個站點,新舊站點具有相同的內(nèi)容,但具體欄目表現(xiàn)形式上不一樣。原網(wǎng)站運行多年,有大量的圖片,這些圖片也會在新站上使用。任務(wù)是:

保證兩個網(wǎng)站圖片內(nèi)容同步,即原來的站點增加一個圖片,新站點即可使用這個圖片。

分析:假設(shè)兩個站點的域名分別為:http://www.a_image.com/和http://www.b_image.com/

1、 將圖片分別拷到兩臺服務(wù)器,以后上傳圖片同時上傳兩臺服務(wù)器。這種方法雖簡單,但是占用巨大的磁盤空間,而且維護麻煩。

2、 在http://www.b_image.com/的頁面上直接寫http://www.a_image.com/的引用。這種方式類似“圖片盜鏈”,但工作量也很大,每加一個圖片都要改鏈接。日后維護工作也很大。

3、 一臺服務(wù)器保留圖片,另外一臺服務(wù)器通過IIS的網(wǎng)絡(luò)共享方式訪問圖片。但開放文件共享對服務(wù)器的安全將構(gòu)成威脅。

剖析頁面運行原理:
當瀏覽器向IIS請求頁面時,IIS會把請求轉(zhuǎn)交給ASP.NET HTTP管道,HTTP管道是一組被控對象(HTPPModel),這些對象按順序處理請求并把這些請求轉(zhuǎn)換成一般的HTML文本。HTTP管道的入口是HttpRuntime類的實體。HttpRuntime類實體從內(nèi)存程序池中選擇一個HttpApplication對象,HttpApplication的主要工作是尋找這樣的類實體(HttpHandler)使之能夠處理請求。應用程序能在Web.Config里對這個Http處理句柄映射列表進行重定義。下列Web.config中的句柄,定義了.jpg資源請求的處理句柄:

  1. <httphandlers>  
  2. <add verb=”*” path=”*.jpg” type=”HandlerTest”/>  
  3. </httphandlers> 

Verb列表可以是逗號分隔的HTTP謂詞列表(例如“GET,PUT,POST”),也可以是通配符“*”;path路徑屬性可以包含單個URL路徑或簡單的通配符字符串(例如*.aspx);type指定逗號分隔的類/程序集組合。ASP.NET首先在應用程序的專用\bin目錄中搜索程序集DLL,然后在系統(tǒng)程序集緩存中搜索程序集DLL。
從代碼層面來看,要實現(xiàn)自定義的HTTP處理句柄,只需要實現(xiàn)一個IhttpHandler接口,其中包括IsReusable和ProcessRequest兩個方法。IsReusable方法用于返回應用程序池中是否存在可重用的類實體的信息,利用這個方法可以同時為多個請求服務(wù),而ProcessRequest方法則接受一個HttpContext實體作為參數(shù),從而得到對Request和Response的存取權(quán)限。

處理思路:當對www.b_image.com/images/book.jpg的請求到達IIS時,ASP.NET初始化一個圖像生成器類,在這個類中,通過HTTP端口把www.a_image.com/images/book.jpg取回來,再將圖像流返回到HTTP響應中。接收并處理HTTP請求是在ProcessRequest方法中完成的。客戶端并不知道實際發(fā)生了什么事情。

代碼:

  1. using System;  
  2. using System.Net;  
  3. using System.IO;  
  4. using System.Web;  
  5. using System.Drawing;  
  6. using System.Drawing.Imaging;  
  7.  
  8. namespace WebHttpModule  
  9. {  
  10.     public class ImageLink : IHttpHandler  
  11.     {  
  12.         public void ProcessRequest(HttpContext context)  
  13.         {  
  14.             string url = context.Request.Url.ToString();  
  15.             //if request is http://www.b_image.com/, then changed to request http://www.a_image.com/  
  16.             urlurl = url.Replace("http://www.b_image.com/", "http://www.a_image.com/");  
  17.  
  18.             //如果使用的相對路徑,就要手工加入完整的url路徑  
  19.             if (url.IndexOf("http://www.a_image.com/") <= 0)  
  20.             {  
  21.                 url = "http://www.a_image.com/" + url;  
  22.             }  
  23.  
  24.             //create one WebClient object, used to request the image of http://www.a_image.com/  
  25.             WebClient client = new WebClient();  
  26.             Stream stream = client.OpenRead(url);  
  27.  
  28.             Image image = Image.FromStream(stream);  
  29.             context.Response.ContentType = "image/jpeg";  
  30.             //將圖像寫入HTTP響應,返回給客戶端請求  
  31.             image.Save(context.Response.OutputStream, ImageFormat.Jpeg);  
  32.  
  33.             image.Dispose();  
  34.         }  
  35.  
  36.         public bool IsReusable  
  37.         {  
  38.             get  
  39.             {  
  40.                 return true;  
  41.             }  
  42.         }  
  43.     }  

配置:

1、 將上面的代碼編譯為ImageLink.dll,在b服務(wù)器建立和a機器相同路徑的圖片目錄images,并在其下建立bin目錄,將ImageLink.dll拷進去,在b服務(wù)器中吧images目錄設(shè)定為一個應用程序,這樣才能針對此應用程序設(shè)定相應的程序映射(添加相應的擴展),以把jpg后綴的請求發(fā)送到ASP.NET去處理。

2、 在Web.Config中配置代碼來設(shè)定httpHandlers,我們現(xiàn)在要做的把對images目錄下的jpg文件的請求轉(zhuǎn)到ImageLink來處理,因此最終的設(shè)定如下:

  1. <httphandlers> 
  2. <add verb=”*” path=”images/*.jpg” type=” WebHttpModule.ImageLink, ImageLink”/> 
  3. </httphandlers> 

將web.config拷到images目錄下。

到此大工就告成了!所有對b服務(wù)器請求的jpg圖片都會從a機器取到,在客戶端卻看不出來。

原文標題:ASP.NET 頁面aspx之擴展

鏈接:http://www.cnblogs.com/JeffreyZhao/archive/2009/10/14/aspnet-routing-design-ideas-and-patterns.html

【編輯推薦】

  1. ASP.NET MVC單元測試:HttpContext類的Path屬性解惑
  2. 自定義的ControllerFactory:接口實現(xiàn),支持Area
  3. ASP.NET Routing之“解析URL”功能詳解
  4. 為ASP.NET MVC應用添加自定義路由
  5. 學習ASP.NET MVC路由的使用方法
責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-07-27 15:25:40

aspx頁面ASP.NET

2009-07-23 14:21:55

ASP.NET頁面

2009-07-31 13:06:53

CheckBoxLisASP.NET頁面

2009-08-05 18:10:09

ASP.NET Def

2009-08-05 14:17:27

ASP.NET錯誤頁面

2009-07-24 16:55:53

添加aspx頁面

2009-07-28 15:38:14

aspx文件編譯ASP.NET

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-23 14:17:41

2009-07-29 17:26:39

ASP.NET頁面

2009-07-31 10:23:44

緩存頁面ASP.NET緩存

2009-07-23 13:19:51

2009-07-31 10:47:18

ASP.NET頁面生命

2009-07-22 16:25:41

ASP.NET AJA

2009-07-24 10:14:22

ASP.NET開發(fā)

2009-07-28 16:57:50

ASP.NET Ses

2009-08-05 11:14:33

ASP.NET ISA

2009-07-27 03:23:00

Default.asp

2009-08-03 13:38:18

ASP.NET編程模型

2009-07-31 10:33:54

ASP.NET頁面輸出
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩超碰| 亚洲精品乱码久久久久久按摩观 | 亚洲成人av在线播放 | 久草色视频 | 国精产品一区一区三区免费完 | 亚洲欧美日韩中文字幕一区二区三区 | 亚洲精品一区二区三区在线观看 | 欧美一级淫片免费视频黄 | 亚洲成人免费 | 日韩精品极品视频在线观看免费 | 精品自拍视频在线观看 | 欧美精品1区2区3区 免费黄篇 | 中文字幕一区二区三区四区五区 | 亚洲欧洲精品一区 | 美女黄网 | 免费欧美视频 | 97视频成人 | 午夜在线视频 | 日韩欧美国产综合 | 日美女逼逼 | 日韩视频―中文字幕 | 一区二区三区精品视频 | 综合久 | 久久99国产精品 | 久久精品这里 | 日韩欧美大片 | 久久亚洲国产精品 | 一级日韩| 久久成人一区 | 999免费视频| 日韩中文字幕一区二区 | 91精品久久久久久久久久入口 | 成人在线视频观看 | 超碰在线观看97 | 黑人巨大精品欧美一区二区免费 | 亚洲精品福利在线 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 91看片视频 | 亚洲精品美女在线观看 | 国产精品区二区三区日本 | 亚洲va国产日韩欧美精品色婷婷 |