我正在尝试使用Web API服务。我正在尝试通过GET请求进行文件下载。这个方法发射得很好并且达到了我的突破点。我创建一个响应并返回它。然后,奇怪的是,断点再次命中。我正在使用Firefox附加海报来测试它。海报说服务器没有回应。知道为什么会这样吗?
以下是响应创建代码:
HttpResponseMessage result = this.Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentLength = file.Length;
result.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddDays(-1));
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("Attachment") { FileName = file.Name };
return result;
唯一重要的变化(我能想到的)是我的WebApiConfig,如下:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
我的方法签名如下所示:public HttpResponseMessage GetUpdate(int Id)
我所有的其他行动都运转良好。我是否在客户端丢失了某些内容,比如接受标题或其他内容?我现在正在做一个简单的GET。
谢谢!
答案 0 :(得分:5)
var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentLength = stream.Length;
result.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddDays(-1));
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("Attachment") { FileName = Path.GetFileName(filePath) };