C# 502从其他站点重定向流时出错

C# 502从其他站点重定向流时出错,c#,azure,web,asp.net-web-api2,azure-web-app-service,C#,Azure,Web,Asp.net Web Api2,Azure Web App Service,在我的WebAPI2控制器中,我想从一个站点请求文件并从控制器返回该文件。这是密码 public HttpResponseMessage GetLecture() { HttpWebRequest request = WebRequest.CreateHttp("http://openmedia.yale.edu/cgi-bin/open_yale/media_downloader.cgi?file=/courses/spring11/phil181/mp3/ph

在我的WebAPI2控制器中,我想从一个站点请求文件并从控制器返回该文件。这是密码

public HttpResponseMessage GetLecture()
{            
    HttpWebRequest request = WebRequest.CreateHttp("http://openmedia.yale.edu/cgi-bin/open_yale/media_downloader.cgi?file=/courses/spring11/phil181/mp3/phil181_01_011111.mp3");
    request.Referer = @"http://oyc.yale.edu/courses/";

    var receivedResponse = request.GetResponse();

    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);                    
    response.Content = new StreamContent(receivedResponse.GetResponseStream());
    response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(receivedResponse.ContentType);
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = "phil181_01_011111.mp3";
    response.Content.Headers.ContentLength = receivedResponse.ContentLength;

    return response;
}
在本地它工作正常,我可以下载该文件,但当我将其部署到Azure时,我得到502错误。Web服务器在充当网关或代理服务器时收到无效响应

日志记录显示它在返回响应后失败,因此在方法执行期间没有异常

它是~50MB的文件。对于较小的文件,代码可以正常工作


如何使此代码在Azure上运行50 MB文件?

首先,我建议您使用Azure Web应用程序,因为这将允许您直接访问IIS日志和相关设置。我强烈感觉到这个问题与IIS/ASP.NET限制有关。您已经指出,该方法在几秒钟内完成执行,因此这可能不是超时问题


您还提到,该代码适用于较小的文件大小,但在文件大小增加时失败。这意味着您的网站将被设置为一个较小的值(或者可能是~4MB的默认值)。是一个描述如何将此限制增加到所需值的链接。希望这对你有用。如果没有,我建议您挖掘您网站的IIS日志。

错误消息涉及内容,您是否尝试过其他内容类型,而不是您在此处获得的内容类型
receivedResponse.ContentType

您在之前的评论中说过,错误出现在Google drive和上面的URL中,因此它取决于返回的内容类型

另外,您返回的是而不是整个文件,同时将
ContentDisposition
指定为
“附件”


因此,也许“音频/mpeg”可以解决这个问题,或者其他一些与流一起工作的内容类型可以解决这个问题。

如果您读取整个响应(出于测试目的),而不直接流式传输,会怎么样?也许在azure中托管时读取响应会因为某种原因而失败?可能是因为请求花费了很长时间。请先下载小文件,然后选择“尝试”。@Shah看起来请求的时间并不长。整个方法执行起来不到一秒钟。我试图将它保存到临时文件中。它保存流,当我尝试从文件返回流时,它以同样的方式失败。根据您的代码,我可以在部署到我的azure web app时将图像流从我的azure blob存储返回到客户端。你的web应用程序总是失败吗?你试过了吗?