1

私は2台のサーバーを持っています。1つはプライベートサーバーであり、ユーザーが直接アクセスできないようにします。もう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または画​​像を読み取るシステムを作成し、それに応じて何かを実行する必要があります。さらに、URLを制御する必要があります。

于 2013-10-03T11:49:44.870 に答える