C#.Net通过公共网站从Internet访问内部网页

C#.Net通过公共网站从Internet访问内部网页,c#,asp.net-mvc-4,proxy,external,internal,C#,Asp.net Mvc 4,Proxy,External,Internal,我有两台服务器,我们可以称它们为A和B。 服务器A有一个面向公众的网站,它有合适的域名,每个人都可以通过互联网访问它。 服务器B与服务器A位于同一网络中。 服务器B有一个使用域名运行的内部网站: 所以,服务器A可以访问服务器B的网站内容、所有页面、img等 在服务器B的网站中,很少有动态脚本图像链接,例如链接: 这将只返回一个图像,并显示一些图形的状态 我需要将此图像放在服务器A上的一个网页中,以便向公众显示 可能吗?我怎样才能做到这一点? 我认为这类似于一些基于web的代理网站: 客户端->

我有两台服务器,我们可以称它们为A和B。 服务器A有一个面向公众的网站,它有合适的域名,每个人都可以通过互联网访问它。 服务器B与服务器A位于同一网络中。 服务器B有一个使用域名运行的内部网站:

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

在服务器B的网站中,很少有动态脚本图像链接,例如链接: 这将只返回一个图像,并显示一些图形的状态

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

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

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

谢谢


River

我猜您正在服务器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);

我同意你的第二个评论。你能和我分享一下你的代理代码吗?这太复杂了吗?我不知道我们是否可以将图像内容传递到viewbag,如果可能的话,我们可以使用Controller从服务器B加载内容,并将其传递到viewbag或viewdata以查看服务器a上的页面,不是吗?非常感谢您这么做!今晚我要试一试。再次感谢!