交叉请求未正确 return 文件

Cross request does not return files correctly

我想通过代理脚本向我的后端服务器发送查询。但它 return 文件不正确。

public class HttpWebRequestRunner : IWebRequestRunner
{
    public HttpWebResponse Run(string backendUri)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(backendUri);

        HttpWebResponse response = (HttpWebResponse) request.GetResponse();

        return response;
    }
}

我的后端服务器对 Internet 关闭,因此我向 Asp.Net Mvc 应用程序发送参数。并向后端服务器发送请求。

后端服务器正在为此请求returning 文件:http://10.0.2.1/Employee/CV/1445

在我的 mvc 控制器中我使用这个:

 public class PersonController : Controller
    {
        public ActionResult GetCv(int id)
        {
            HttpWebResponse response = new HttpWebResponse();

            HttpWebResponse webResponse = response.run("http://10.0.2.1/Employee/CV/1445");

            context.HttpContext.Response.ContentType = wbResponse.ContentType;

            webResponse.GetResponseStream().CopyTo(context.HttpContext.Response.OutputStream);

            // write result...
        }       
    }

现在

如果我从浏览器向后端发送请求 url http://10.0.2.1/Employee/CV/1445 它 returns 1445.pdf 文件

但是如果我像这样通过代理应用程序发送请求 http://localhost:22414/Person/GetCv/1445 此 return 是一个名为 file 但不是 pdf 扩展名的文件。

您还需要中继 Content-Disposition HTTP header。

文件名在 header 信息中。 webResponse.Headers["Content-Disposition"]。所以你必须这样使用:

 context.HttpContext.Response.Headers.Set(
     "Content-Disposition", 
     webResponse.Headers.Get("Content-Disposition"));