1

我有两台服务器。一个是私有服务器,我不希望用户直接访问它,另一个是公共可以访问的服务器。我可以通过 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;
    }

如何更改我的代码以使其适用于任何文件?

4

2 回答 2

2

您可以检查响应内容类型并据此执行您需要的操作。您需要更改您的操作以返回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);
}
于 2013-02-22T19:20:14.100 回答
0

您必须编写一个系统,从 resultado 读取您的 html 或图像,并根据该 PLUS 执行某些操作,您还需要控制您的 Url。

于 2013-10-03T11:49:44.870 回答