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

ASP.NET中的HTTP協議

開發 后端
本文介紹ASP.NET中的HTTP協議,在Web應用程序中處理大文件下載的問題一直出了名的困難,因此對于大多數站點來說,如果用戶的下載被中斷了,它們只能說悲哀降臨到用戶的身上了。

ASP.NET中的HTTP協議

在Web應用程序中處理大文件下載的問題一直出了名的困難,因此對于大多數站點來說,如果用戶的下載被中斷了,它們只能說悲哀降臨到用戶的身上了。但是我們現在不必這樣了,因為你可以使自己的ASP.NET應用程序有能力支持可恢復(繼續)的大文件下載。使用本文提供的方法的時候,你可以跟蹤下載的過程,這樣你就可以處理動態建立的文件——而且要達到這個目標根本不需要舊式的ISAPI動態鏈接庫和非受控的(unmanaged)C++代碼。

為客戶端提供從互聯網上下載文件的服務最容易了,對嗎?僅僅只需要把可下載的文件復制到你的Web應用程序目錄中,發布鏈接并讓IIS完成所有相關的工作。但是,文件服務不應該比脖子上的疼痛還要多(還要麻煩),你不希望整個世界都能訪問自己的數據,你不希望服務器被數百個靜態文件塞滿了,你甚至于希望下載臨時文件——只有當客戶端開始下載后的空閑時間才建立這些文件。

不幸的是,使用IIS對下載請求的默認的響應是不可能達到這些效果的。因此在一般情況下,為了獲得對下載過程的控制權,開發者需要鏈接到一個定制的。 aspx頁面,在這個頁面中它們檢查用戶憑證(credential)、建立可以下載的文件并使用下面的代碼把該文件推送給客戶端:

Response.WriteFile

Response.End()

而這就是出現真正麻煩的地方。

有什么問題?

WriteFile方法看起來非常完美,它使文件的二進制數據流向客戶端。但是直到最近我們才知道,WriteFile方法是一個出名的內存占用狂,它把整個文件載入服務器的RAM中來提供服務(實際上它甚至于會占用文件兩倍大小的空間)。對于大文件,這會引起服務內存問題,并且可能重復ASP.NET過程。但是在2004年6月微軟發布了一個補丁解決了這個問題。這個補丁現在是。NET Framework 1.1補丁包(SP1)的一部分。

這個補丁引入了TransmitFile方法,它把一個磁盤文件讀入到較小的內存緩沖區之后就開始傳輸該文件。盡管這個方案解決了內存和循環的問題,但是它仍然不能令人滿意。你不能控制響應的生命周期。你無法知道下載是否正確地完成了,你沒有辦法知道下載是否被中斷了,并且(如果你建立了臨時文件)你也不知道是否應該、以及什么時候可以刪除這些文件。更糟的是,如果下載的確失敗了,TransmitFile方法又從客戶端下次嘗試的文件頭部開始下載。

其中一種可能的解決方案——實現后臺智能傳輸服務(BITS)對于多數站點來說是不可行的,因為這會毀掉維持客戶端瀏覽器和操作系統獨立性而作出的努力。

令人滿意的解決方案的基礎還是來自微軟用于解決WriteFile引起的內存混亂問題的第一次嘗試(見知識庫文章812406)。那篇文章演示了智能的大塊數據下載過程,它從文件流中讀取數據。在服務器把字節塊發送給客戶端之前,它使用Response.IsClientConnected屬性檢查客戶端是否仍然保持著連接。如果仍然保持連接,它就繼續發送流字節,否則就停止,以防止服務器發送不必要的數據。

這就是我們采用的方法,特別是在下載臨時文件的時候。在IsClientConnected返回False的情況下,你就知道下載過程被中斷了,你應該保存文件;反之,當這個過程成功完成的時候,你就刪除臨時文件。此外,為了恢復中斷了的下載,你需要做的工作是從上次下載嘗試過程中客戶端連接失敗的文件點開始下載。

HTTP協議和頭信息(Header)支持

HTTP協議支持可以用于處理被中斷下載的頭信息。使用少量的HTTP頭信息,你可以增強自己的下載過程,使它完全遵循HTTP協議規范。這個規范與ranges一起提供恢復被中斷的下載所需要的一切信息。

【編輯推薦】

  1. ASP.NET頁面顯示XML數據
  2. 了解什么是IFRAME ASP.NET
  3. ASP.NET生命周期的展示
  4. 解決ASP.NET AJAX腳本的錯誤問題
  5. 詳解ASP.NET應用程序
責任編輯:佚名 來源: 百度空間
相關推薦

2009-08-03 13:12:34

ASP.NET編程模型

2009-07-28 15:29:03

實現HTTP請求ASP.NET

2009-08-03 11:21:47

ASP.NET編程模型

2009-07-24 10:10:22

ASP.NET

2009-07-24 16:17:42

WebRequestEASP.NET

2011-04-13 15:18:10

.htmHTTP請求處理

2009-08-03 12:40:46

ASP.NET編程模型

2013-05-08 12:42:39

HTTP協議IIS原理ASP.NET

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-30 13:28:55

ASP.NET中的ja

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-31 10:08:33

OutputCache

2009-07-20 13:32:24

ScriptManagASP.NET

2009-07-20 14:54:23

HttpWorkerRASP.NET

2009-07-30 12:35:51

ASP.NET中的對象

2009-07-20 15:19:52

ViewState本質ASP.NET

2009-07-27 13:01:28

TreeViewASP.NET

2009-07-31 09:58:20

URL映射ASP.NET

2009-08-04 18:05:37

動態編譯ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区在线视频 | 亚洲 成人 av | 亚洲色视频 | 在线观看a视频 | 欧美aa在线| 99爱在线| 亚洲精品欧美 | 欧美综合国产精品久久丁香 | 国产96在线 | 国产精品96久久久久久 | 欧美精品在线视频 | 国产一区久久 | 精品96久久久久久中文字幕无 | 久久精品国产一区二区电影 | 亚洲精品视频网站在线观看 | 国产欧美一区二区精品久导航 | 久热爱| 涩涩鲁亚洲精品一区二区 | 男人天堂网址 | 亚洲一区二区视频在线观看 | 成人欧美一区二区三区黑人孕妇 | 嫩草视频在线 | 国产精品日韩一区二区 | 亚洲在线一区二区 | 久久久一区二区三区 | 欧美激情国产日韩精品一区18 | 久久久九九九九 | 懂色tv | 国产亚洲网站 | 野狼在线社区2017入口 | 日韩av网址在线观看 | 波多野结衣一区二区 | 国产精品久久久久久久三级 | 日韩欧美在 | 欧美精品一区二区在线观看 | 天天操精品视频 | 久久99精品久久久 | 久久精品免费观看 | 国产a视频 | 色爱av| 国产精品久久久久av |