检索网站内容并在ASP.NET MVC 4中返回

本文关键字:MVC NET 返回 ASP 网站 检索 | 更新日期: 2023-09-27 18:00:31

我有两个服务器。一个是私有服务器,我不希望用户直接访问它,另一个是公共可以访问的服务器。我可以通过以下URL访问我的私人服务器:http://xxx.xx.xxx.xxx/

我想做的是创建某种"代理",只用于我的私人服务器。我的想法是:http://www.domain.com/server/path/here/something此页面应显示的内容http://xxx.xx.xxx.xxx/path/here/something

我已经完成了这项工作,但我能使其工作的唯一方法是将内容作为字符串返回,然后浏览器将解释HTML。这适用于返回HTML内容的页面,但如果我想直接访问.gif或任何类型的文件,它就不起作用(当然)。

这是我目前拥有的代码:

    public string Index(string url)
    {
        string uri = "http://xxx.xx.xxx.xxx/" + url;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "GET";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader responseStream = new StreamReader(response.GetResponseStream());
        string resultado = responseStream.ReadToEnd();
        return resultado;
    }

如何更改代码,使其适用于任何文件?

检索网站内容并在ASP.NET MVC 4中返回

您可以检查响应内容类型,并在此基础上执行所需操作。您需要更改操作以返回ActionResult而不是字符串。

if(response.ContentType.Equals("text/html"))
{
 //show html stuff
 return Content(resultado);
}
else if(response.ContentType.Contains("image/"))
{
   var ms = new MemoryStream();
    responseStream.BaseStream.CopyTo(ms);
    var imageBytes = ms.ToArray();
  return File(imageBytes, response.ContentType);
}

你必须编写一个系统,从resultado中读取你的html或图像,并根据它做一些事情。此外,你还需要控制你的Url。