日期:2014-05-17  浏览次数:20618 次

ASP.NET(C#)转发页面有经验的进来帮忙
要实现的功能如下:
客户端A(浏览器)、服务器B(中转服务器)、服务器C(目的服务器)
我现在是当服务器B接收到客户端A的请求后经过处理访问服务器C,再把读取访问服务器C返回的内容返回给客户端A。
现在主要的问题是,怎么让服务器C保存有客户端A的会话?比如客户端A访问服务器B,服务器B提交用户名和密码登陆服务器C把请求返回的内容返回给客户端A。怎么让服务器C能保存客户端A的登陆状态?先说明服务器C不受自己控制范围内,属于第三方提供的。也无协商修改的余地。也不要在客户端上做跳转。因为必须让客户端连接服务器B,中间要处理一些数据。。

这样的做法有点像代理服务器。。不过这个中转是要处理部分内容的。。

前5名指导思路的各给10分。我认为最好的回答的单独给50分,给出示例代码的另开帖送100分。

------解决方案--------------------
服务器B 使用httpwebrequest去访问C(包括登录以及其他等功能)
通过httpwebrequest.CookieContainer来与C保持会话,而这上会话对象可保存在B的Session中 B的Session又是与A建立会话的.
------解决方案--------------------
System.Net.HttpWebRequest req = ( System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://localhost");

System.Net.CookieContainer cook = null;
if(Session["cook"]!=null)
{
cook = (System.Net.CookieContainer)Session["cook"];
}else
{
cook = new System.Net.CookieContainer();
Session["cook"] = cook;
}
req.CookieContainer = cook;

//然后登录,或其他操作.
------解决方案--------------------
要将A通过B到C登录后,然后A直接访问C有点难度,

如果要实现可以
B登录到C后得到的Cook,然后B将cookie的里的内容伪造成C的地址写给A.