使用WebClient下载Cab文件会产生太少的字节

时间:2010-10-13 12:31:43

标签: c# http download webclient

我需要将Url中的Cab文件下载到流中。

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 字节。

我注意到,responce标头内容类型以 text / html格式返回;字符集= UTF-8

我不太清楚为什么,但我认为这是影响我回来的数据的原因。

1 个答案:

答案 0 :(得分:1)

我相信问题是SharePoint正在将xsn传递给Forms Server,以便为您呈现为HTML的信息路径表单。你需要阻止这种情况发生。您可以通过向URL请求添加一些查询字符串参数来完成此操作。

可在以下网址找到:

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

我建议您使用NoRedirect = true