2010-05-28 45 views
1

我有一個ASP .NET負載平衡的應用程序(web服務和網站)。它在SQL服務器上運行。我需要能夠提供大型文件下載。但是,由於負載平衡的情況,文件存儲在SQL數據庫中,而不是文件系統。 BITS似乎是最好的方法。我完全控制了客戶端。但是,我不知道如何配置BITS從數據庫中讀取文件。我知道如何編寫C#代碼,但我不知道如何讓BITS鉤入它,而不是從文件系統中讀取文件。如何配置或擴展BITS(後臺智能傳輸服務)從Sql Server數據庫讀取文件

任何想法?

+0

這裏只是一個想法,但你有沒有考慮過在S3中存儲內容並提供Bittorent下載?在Amazon S3中使用BitTorrent http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3Torrent.html – 2010-05-28 20:09:09

+0

什麼版本的SQL Server? 2008引入了FILESTREAM,它實際上將文件保留在文件系統上並允許您直接訪問它們 – NotMe 2011-03-15 22:46:27

+0

爲什麼不將文件放入DFS樹中? – 2011-10-18 19:32:38

回答

2

您可以通過實現System.Web.IHttpHandler來創建自定義http處理程序。 ProcessRequest(HttpContext上下文)方法是您將從數據庫編寫文件檢索代碼的地方。由於BITS使用範圍請求進行操作,因此您需要解析context.Request.Headers [「Range」]的值以獲取請求的開始和結束字節。在ProcessRequest中,您可以使用SqlCommand.ExecuteReader(CommandBehavior.SequentialAccess)方法從數據庫中讀取二進制文件,並將結果二進制文件設置爲context.Response.OutputStream。請記得在最後調用context.Response.Flush()。

自定義HttpHandler將提供特定的文件擴展名(例如'.file')。這是需要的東西在IIS做:

兩個IIS版本

  1. 添加到節中在web.config中:

IIS 6.0

  1. 將.file(application/x-zip-compressed)擴展添加爲網站的MIME類型。

  2. 添加應用程序擴展(網站屬性虛擬目錄配置映射)

擴展:.file 可執行文件路徑(S)中:%windir%\ microsoft.net \框架\ V2.0.50727 \ ASPNET_ISAPI.DLL %WINDIR%\ Microsoft.NET \ Framework64 \ V2.0.50727 \ ASPNET_ISAPI.DLL

IIS 7.0

  1. 添加到一節中web.config中:

  • 添加到部分在幅材。配置:

    <mimeMap fileExtension=".file" mimeType="application/x-zip-compressed" /> 
    
  • 希望這是足以讓你開始。

    0

    看看2008年的圖書在線OpenSqlFilestream。該API有可能對您有幫助的示例。

    相關問題