利用HttpHandler 調用不同的Css文件


我對HttpHandler的理解

HttpHandler 是Framework中提供用於對Http請求的編程。而實現這一操作的主要接口是IHttpHandler和IHttpModule.

利用HttpHandler 實現在不同的語言下調用不同的Css文件

創建HttpHandlerCss.cs 文件

 

View Code
   public class HttpHandlerCss : System.Web.IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(System.Web.HttpContext context)
{

string File = context.Request.PhysicalPath;
string Url = context.Request.RawUrl;
HttpRequest req = context.Request;
bool isnew = string.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"]);
DateTime cachedate = isnew ? DateTime.MinValue : DateTime.Parse(context.Request.Headers["If-Modified-Since"]).ToUniversalTime();
string strlan = req.Headers["Accept-Language"];
string[] lans = strlan.Split(',');
string firstlan = lans[0];
int ipos = firstlan.IndexOf(';');
if (ipos != -1)
{
firstlan = firstlan.Substring(0, ipos).Trim();

}
string filename;
if (firstlan == "zh-CN" || firstlan == "zh")
{

filename = File;

}
else
{
filename = File.Replace("App_Themes", "App_ThemesOther");
}
DateTime Lastmodified = new FileInfo(filename).LastWriteTimeUtc;
if (Lastmodified <= cachedate)
{
context.Response.StatusCode = 304;
}
else
{
context.Response.ContentType = "text/css";
context.Response.AddHeader("Last-Modified", Lastmodified.ToString("r"));
context.Response.TransmitFile(filename);
}
}

}


由上面的代碼可以看出,IHttpHandler要求實現一個方法和一個屬性

ProcessRequest方法中應該放置我們處理請求的主要代碼。

IsReusable屬性,獲取一個值,該值指示其他請求是否可以使用 IHttpHandler 實例,我把它設置成true。

通過 HttpRequest獲得不同的語言,然后返回不同的Css 文件 。

通過上面的代碼還可以看出我使用了Lastmodified

Lastmodified :標記此文件在服務期端最后被修改的時間,格式類似這樣:Last-Modified: March, 12 May 2012 18:53:33 GMT,來判斷客戶端在第二次請求此URL時,根據 HTTP 協議的規定,瀏覽器會向服務器傳送 If-Modified-Since 報頭,詢問該時間之后文件是否有被修改過。如果服務器端的資源沒有變化,則自動返回 HTTP 304 狀態碼,內容為空,這樣就節省了傳輸數據量。當服務器端代碼發生改變或者重啟服務器時,則重新發出資源,返回和第一次請求時類似。從而保證不向客戶端重復發出資源,也保證當服務器有變化時,客戶端能夠得到最新的資源。

TransmitFile

   利用TransmitFile將指定的文件直接寫入 HTTP 響應輸出流,而不在內存中緩沖該文件。

對Web.config 進行配置

 

< system.web> 
<httpHandler>
<add verb ="*" path ="*.css" type ="CryptoGateway.WebPages.HttpHandlerCss,CSSHttpHandler" validate="true"/>
</HttpHandler>
</system.web>


 

源代碼下載:http://files.cnblogs.com/changminglong/HttpHandlerCss.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM