我想通过代理脚本向我的后端服务器发送查询。但它没有正确返回文件。
public class HttpWebRequestRunner : IWebRequestRunner
{
public HttpWebResponse Run(string backendUri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(backendUri);
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
return response;
}
}
我的后端服务器已关闭互联网,所以我发送参数我的Asp.Net Mvc应用程序。它将请求发送到后端服务器。
后端服务器正在返回此请求的文件:http://10.0.2.1/Employee/CV/1445
Inmy 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...
}
}
现在
如果我向浏览器的后端发送请求此网址http://10.0.2.1/Employee/CV/1445
,则会返回 1445.pdf 文件
但如果我通过代理应用程序发送请求,请http://localhost:22414/Person/GetCv/1445
这将返回名为 file 但不是pdf扩展名的文件。
答案 0 :(得分:1)
您还需要中继Content-Disposition
HTTP标头。
答案 1 :(得分:1)
文件名在标题信息中。 webResponse.Headers["Content-Disposition"]
。所以你必须这样使用:
context.HttpContext.Response.Headers.Set(
"Content-Disposition",
webResponse.Headers.Get("Content-Disposition"));