通过mvc控制器从web api下载文件?

时间:2015-07-16 20:04:19

标签: asp.net-mvc asp.net-web-api asp.net-mvc-5 asp.net-web-api2

我有一个已发布的api路由,它返回了一个Task。在一个完全独立的站点中,我试图点击路径,获取流,并将内容保存到访问该站点的系统本地文件。从一个测试控制台应用程序到达路径我得到的流很好,可以做任何我想要的。但是从我单独的MVC控制器中,当单步执行时,在点击路径并等待结果后,我的页面似乎停止了。单步执行它只是在踩到那条线后没有做任何事情。我该如何解决这个问题?

抱歉,我忘记了我们提取了很多可能很重要的细节。

GetStream方法基本上只是

return (new HttpClient()).GetStreamAsync(route);  //where route is the route to my api method

我路线背后的方法有这个

            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
            var stream = new FileStream(path, FileMode.Open);
            result.Content = new StreamContent(stream);
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            return result;

mvc控制器中的方法是

public FileResult DownloadLogFile([Bind(Include = "SelectedLogFile")] DiagnosticsModel diagnostics)
    {
        using (var downStream = GetStream())
        {
            return new FileStreamResult(downStream, System.Net.Mime.MediaTypeNames.Application.Octet);
        }
    }

private Stream GetStream()
{
    var apiResult = api.GetStream();
    return apiResult.Result;
}

0 个答案:

没有答案