返回音频文件时,API会被击中两次

时间:2018-03-09 23:48:45

标签: c# asp.net asp.net-web-api

我从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;
    }

我注意到这个动作方法被点击了两次,就像enter image description here

一样

有谁能说明为什么会这样?为什么我的api方法被调用两次?

P.S我正在使用Url.Link来制作上传的文件网址。当我点击它时,api方法被调用两次。

1 个答案:

答案 0 :(得分:1)

服务器仅响应请求。他们无法在没有初始请求的情况下与客户进行通信。 也就是说,您的客户端代码应该归咎于此,因为它发送了两个请求而不是一个,服务器正确响应这两个请求。