Загрузка файла Cab с использованием WebClient дает слишком мало байтов - PullRequest
1 голос
/ 13 октября 2010

Мне нужно загрузить файл Cab с URL-адреса в поток.

using (WebClient client = new WebClient())
{
    client.Credentials = CredentialCache.DefaultCredentials;
    byte[] fileContents = client.DownloadData("http://localhost/sites/hfsc/FormServerTemplates/HfscInspectionForm.xsn");
    using (MemoryStream ms = new MemoryStream(fileContents))
    {
        FormTemplate = formExtractor.ExtractFormTemplateComponent(ms, "template.xml");
    }
}

Это довольно просто, однако мой экстрактор кабины (CabLib) выдает исключение, что это недопустимый шкаф.

Ранее я использовал вызов SharePoint для получения потока байтов, и он возвращал 30942 байт. Поток, который я получаю через этот метод, работал правильно с CabLib. Поток, который я получаю с WebClient, возвращает только 28087 байт.

Я заметил, что тип содержимого заголовка ответа возвращается как text / html; кодировка = UTF-8

Я не совсем уверен, почему, но я думаю, что именно это влияет на данные, которые я получаю.

1 Ответ

1 голос
/ 13 октября 2010

Я считаю, что проблема в том, что SharePoint передает xsn серверу форм для отображения в виде формы информационного пути в HTML для вас. Вы должны остановить это. Это можно сделать, добавив некоторые параметры строки запроса в URL-запрос.

Их можно найти по адресу:

http://msdn.microsoft.com/en-us/library/ms772417.aspx

Я предлагаю вам использовать NoRedirect = true

...