从外部服务器客户端命中内部网络休息服务

时间:2014-09-08 04:17:04

标签: c# asp.net vb.net web-services rest

我正在尝试编写客户端代码以在另一个不包含公共IP地址的内部服务器上访问休息服务。因此,我正在尝试编写一个小型Web服务来获取所需的ID,并从Web服务器中获取其余服务。

我创建了一个Web服务,如下所示,从Web服务器点击其余服务,虽然我成功了,客户端

<System.Web.Services.Webmethod()> _
        Public Shared Function GetService(ByVal id as Integer) as String
            dim serviceUrl as string = "http://192.168.0.87/rest/services/"
            dim httpWebRequest as System.Net.HttpWebRequest = System.Net.WebRequest.Create(serviceUrl)
              httpWebRequest.ContentType = "text/json"
              httpWebRequest.Method = "GET"


              dim httpResponse as System.Net.HttpWebResponse = httpWebRequest.GetResponse()
              Using streamReader as new System.IO.StreamReader(httpResponse.GetResponseStream())

                Return streamReader.ReadToEnd()        
             End Using
        End Function

虽然这对于一个呼叫正常工作,但同一个呼叫的结果会引用URL以进行进一步的服务呼叫,例如获取图像等。

是否有任何.Net应用程序,或任何解决方案,用外部IP地址和特定路径编写服务,并自动将地址服务器端重定向到内部IP地址的休息呼叫。

例如,如果客户端点击203.141.86.2/rest/services,它将通过中间人服务自动转换为192.168.082/rest/services的内部IP地址。

例如203.141.86.2/rest/services实际上是一个真正的地址,它只会翻译它之后的所有内容并将其放入新地址。 注意:现有的解决方案是用Web表单而不是MVC编写的,所以我不确定是否需要设置一个新的单个IIS应用程序来将这些调用转换作为webapi来处理。

它基本上就像NAT服务。

有没有人有任何解决方案?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您要实现的目标称为反向代理。试试nginx。 http://nginx.org