Загрузка файла из WCF REST с хранилищем BLOB-объектов Azure - PullRequest
1 голос
/ 07 января 2012

У меня есть служба WCF REST с хранилищем BLOB-объектов Azure.Я не хочу использовать свой сервис в качестве прокси-сервера с потоком, поэтому я хотел перенаправить запрос клиента на абсолютный URL-адрес большого двоичного объекта, но он перенаправляет в файл и пытается открыть его напрямую.Все, что я хочу, это запустить процесс загрузки, когда сервер перенаправляет запрос на абсолютный URL-адрес большого двоичного объекта.Код, который я попробовал, приведен ниже:

    var sas = blob.GetSharedAccessSignature(new SharedAccessPolicy
    {
        Permissions = SharedAccessPermissions.Read,
        SharedAccessStartTime = DateTime.UtcNow,
        SharedAccessExpiryTime = DateTime.UtcNow + TimeSpan.FromMinutes(1)
    });
    WebOperationContext.Current.OutgoingResponse.ContentType = blob.Properties.ContentType;
    WebOperationContext.Current.OutgoingResponse.ContentLength = blob.Properties.Length;
    WebOperationContext.Current.OutgoingResponse.Location = blob.Uri.AbsoluteUri+sas;
    WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect;

PS Я пытался изменить код состояния на Перенаправление, Перемещение ... и т. Д., Но ничего не изменилось.

Обновление Если я изменю ContentType на application / octet-stream, в IE это будет выглядеть так:

<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
...
</base64Binary>

1 Ответ

1 голос
/ 07 января 2012

Возможные дубликаты этого вопроса .

Поскольку Stive Marx заявляет, что нет способа контролировать заголовок "content-disposition" для Azure Lbob, нет способа принудительно использовать браузер(IE), чтобы загрузить файл.Если для параметра content-type установлено значение «application / octet-stream», это может заставить некоторые браузеры загружать файл вместо его открытия, но, очевидно, он не работает для IE.

...