如何通过其他服务器发送对asp.net webform请求的响应

时间:2011-06-17 18:34:22

标签: .net asp.net vb.net http networking

我有两个带有公共IP的Web服务器,例如带有IP 111.111.111.111的Server1和带有IP 222.222.222.222的Server2。请看图片:

flow diagram

服务器1 上有一个asp.net webform。我的意图是:

  1. 对于Server1中该网络表单的每个http请求,Server1只是将请求的信息传递给 Server2 以进行逻辑处理,随后 Server2发送响应返回客户端(即普通浏览器)
  2. 我的问题是:

    1. Server1需要传递给Server2的信息,以便Server2能够将响应发送回客户端?请注意,在Server2,有一个 TcpListener实例。此TcpListener实例充当来自Server1的该webform请求信息的接收者。
    2. Server2上的合适的对象(即System.Net中的类或相关命名空间中的类,如System.Net.Sockets)将响应发送回客户端是什么?这里适合意味着能够满足我的意图。

6 个答案:

答案 0 :(得分:2)

此问题的最佳解决方案是在另一台服务器上设置WCF Web服务。

ASP.NET WCF / Web服务支持与在同一台Windows机器上运行的WCF应用程序或在不同Windows机器上运行的WCF或在平台上构建的标准Web服务的互操作性

查看msdn上的以下文章:

ASP.NET Web Services

ASP.NET Windows Communication Foundation in .NET

enter image description here

答案 1 :(得分:1)

这对我来说非常可疑,就像网络钓鱼者想要隐藏网络钓鱼尝试一样。

您实际上不能让不同的服务器直接将响应发送回客户端而不是直接接收请求的服务器。没有客户会接受这样的回复。

如果这是合法的操作,您需要一个接受请求的代理,然后转发回复。

答案 2 :(得分:1)

我们可能需要有关您的方案的更多信息,但我不认为Server2可以将响应发送回客户端。

客户端仍然有一个打开的套接字,用于侦听来自Server1的响应。

为了完成这样的事情,您可能需要在混合中添加某种代理。像这样:客户端发送给发送给服务器1的代理,后者发送给服务器2,服务器2向代理发送响应,代理向客户端发送响应。

或让Server1充当您的代理。

答案 3 :(得分:1)

好吧,客户端通过http连接服务器1。没关系,但是你希望服务器2通过TCP做出响应。这对我来说似乎不太可能,因为客户对服务器2一无所知。

您可能希望通过tcp从服务器1内部连接服务器2执行您的操作并将您的响应从服务器1返回到您的客户端。 (例如,服务器2的作用类似于会话状态服务器)

如果您正在尝试为另一个故事加载平衡。实际上,如果你能告诉我们为什么你需要这样的架构,也许你会得到更好的答案。

答案 4 :(得分:1)

如果您只是想请求转发,只需通过调用从server1到server2的第二个请求将请求转发给server2即可。然后,您将该响应作为server1对客户端的响应返回。您无法直接与客户端进行server2通话,因为客户端未连接到server2。

我会使用System.Net.HttpWebRequest并根据原始请求设置HTTP标头和内容主体(有效地重播发送到server2上server1的完全相同的消息),然后将响应从server2返回给客户端。

如果你这样做,你将运行一个应用程序,它只是将任何请求转发给server2,从而运行一个虚拟应用程序。这个应用程序可以非常简单,因为事实上它只不过是一个HTTP代理。

然而,我必须再问一次,到底是什么?你的建筑是否有某种请求过滤机制?因为我相信有更好的方法来解决这个问题。

答案 5 :(得分:1)

好的,这是一个奇怪的解决方案:)

基本上,我会假设客户端向aspx网页请求问题,并将服务器的回复视为 ANSWER 。从图中,我将再次假设Server2是该问题的答案。

为了使问答环节有效,并且由于互联网行为,我将分两个步骤实施:

第1步:客户问问题,Server1返回答案的网址。此URL将指向Server2。 Server2需要通过lan将此URL传递给Server1)

第2步:客户端请求在Server2中检索答案。

总之,客户端将直接从Server1请求webform并从Server2检索响应。所有操作均由客户启动。