Как настроить или расширить BITS (фоновую интеллектуальную службу передачи) для чтения файлов из базы данных сервера Sql - PullRequest
1 голос
/ 28 мая 2010

У меня есть приложение ASP .NET с балансировкой нагрузки (веб-сервис и веб-сайт). Он работает на сервере SQL. Мне нужно иметь возможность предоставлять большие файлы для скачивания. Однако из-за ситуации с балансировкой нагрузки файлы хранятся в базе данных SQL, а не в файловой системе. БИТЫ, кажется, лучший подход. У меня есть полный контроль над клиентом. Тем не менее, я не знаю, как настроить биты для чтения файла из базы данных. Я знаю, как написать для этого код C #, но я не знаю, как заставить БИТЫ подключаться к нему, в отличие от чтения файла из файловой системы.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 27 августа 2010

Вы можете создать собственный обработчик http, реализовав System.Web.IHttpHandler. Метод 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-compress) в качестве MIME-типа для веб-сайта.

  2. Добавление расширения приложения (Свойства веб-сайта  Виртуальный каталог  Конфигурация  Сопоставления)

Расширение: .file Путь к исполняемым файлам:% windir% \ microsoft.net \ framework \ v2.0.50727 \ aspnet_isapi.dll % Windir% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll

IIS 7.0

  1. Добавить в раздел в web.config:

  1. Добавить в раздел в web.config:

        <mimeMap fileExtension=".file" mimeType="application/x-zip-compressed" />
    

Надеюсь, этого достаточно, чтобы вы начали.

0 голосов
/ 03 июня 2010

Посмотрите на Книгу 2008 года в Интернете OpenSqlFilestream . В этом API есть примеры, которые могут вам помочь.

...