【问题标题】:C# .Net Access Internal Webpage from Internet via Public websiteC# .Net 通过公共网站从 Internet 访问内部网页
【发布时间】:2013-11-14 00:24:08
【问题描述】:

我有两台服务器,我们可以称它们为 A 和 B。 服务器 A 有一个面向公众的网站,它有正确的域名,每个人都可以通过 Internet 访问它。 服务器 B 与服务器 A 位于同一网络中。 服务器 B 有一个内部网站运行,域名为:http://b.domain.local/

所以,服务器A可以访问服务器B的网站内容,所有页面,img等...

在服务器B的网站中,动态脚本图片链接很少,例如链接: http://b.domain.local/img.php?Action=view&ID=5 这只会返回一个图像,它会显示一些图形的状态。

我需要将此图像放在服务器 A 上的其中一个网页中以向公众显示。

这可能吗?我怎么能做到这一点? 我认为这类似于一些基于 Web 的代理站点: 客户端 -> 向服务器 A 请求,服务器 A -> 向服务器 B 请求,服务器 B 将值返回给服务器 A,服务器 A 将结果返回给客户端... 不是吗?

我在服务器 A 上使用 C# MVC4。

谢谢

河流

【问题讨论】:

    标签: c# asp.net-mvc-4 proxy external internal


    【解决方案1】:

    我猜你在服务器 A 上使用 IIS?您能否在服务器 B 上共享一个包含图像的文件夹,并在服务器 A 上的 IIS 中设置一个虚拟目录,该目录指向服务器 B 上的共享。所以您仍然可以将它保留在服务器 B 上,但在服务器 A 上公开提供它。当然,这是假设您有一个实际的图像文件要共享。

    或者,您所说的代理页面也可以获取图像。我以前在一个网站上做过这个,它确实有效,但是这样做会有更多的开销。如果图像是从您为服务器 B 提供的链接动态生成的,那么这将是唯一的选择,因为公众无法直接访问它。

    我将使用以下代码实现代理样式页面:

    Response.ContentType = "image/jpeg";
    HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
    HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse();
    Stream stream = httpWebReponse.GetResponseStream();
    Image _Image = Image.FromStream(stream);
    _Image.Save(Response.OutputStream, ImageFormat.Jpeg);
    

    【讨论】:

    • 我同意你的第二条评论。您能否就这个问题与我分享您的代理代码?这太复杂了吗?我不知道我们是否可以将图像内容传递到视图包中,如果可以,那么我们可以使用控制器从服务器 B 加载内容并将其传递到视图包或视图数据到服务器 A 上的查看页面,不是吗是吗?
    • 非常感谢您这样做!今晚我会试一试。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 2020-05-16
    • 2018-12-29
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    相关资源
    最近更新 更多