我从web api返回一个音频文件。要求是播放媒体文件而不是下载,我正在使用此代码。
[HttpGet]
[Route("audiofile/download", Name = "GetAudioFile")]
public HttpResponseMessage GetAudioFile(string q)
{
if (string.IsNullOrWhiteSpace(q))
{
return new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest };
}
String path = HttpContext.Current.Server.MapPath("~/AudioUploads/");
string filePath = Path.Combine(path, q);
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(File.OpenRead(filePath))
};
var contentType = MimeMapping.GetMimeMapping(Path.GetExtension(filePath));
response.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType);
return response;
}
一样
有谁能说明为什么会这样?为什么我的api方法被调用两次?
P.S我正在使用Url.Link来制作上传的文件网址。当我点击它时,api方法被调用两次。
答案 0 :(得分:1)
服务器仅响应请求。他们无法在没有初始请求的情况下与客户进行通信。 也就是说,您的客户端代码应该归咎于此,因为它发送了两个请求而不是一个,服务器正确响应这两个请求。