HttpPost返回一个损坏的文件

时间:2017-10-25 09:17:04

标签: c# angular asp.net-web-api2

最初我通过HttpGet方法返回.xlsx文件,但是,现在我必须将非常大的ID数组传递给服务器才能获取该文件。我试图将maxUrlLength增加到2097151,我的web配置包含

 <security>
          <requestFiltering>
            <requestLimits
                maxAllowedContentLength="30000000"
                maxUrl="2097151"
                maxQueryString="2097151"/>
          </requestFiltering>
        </security> 

由于请求量很大,我选择使用HttpPost。我的代码如下:

System.Net.Http.HttpResponseMessage result = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK);
result.Content = response;
            result.Content.Headers.ContentDisposition =
            new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
            {
                FileName = fileName
            };
result.Content.Headers.ContentType =
                new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
            result.Content.Headers.Add("FileName", fileName);
            return result;

返回的文件出现以下错误;

我们发现xxx.xlsx中的某些内容存在问题。你想让我们尽可能多地恢复吗?如果您信任此工作簿的来源,请单击“是”。 如果我点击是,那么:

Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。验证文件是否已损坏,以及文件扩展名是否与文件格式匹配。

我在前端使用Angular2。

let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });
        return this._http.post(this.config.apiEndpoint + encodeURI(url), param, options).finally(() => {
            if (showSpinner) { this.removeSpinner(); }
        });

应该采取什么补救措施?

0 个答案:

没有答案