如何用ASP.NET来实现基于Web的HTTP代理?用HttpWebRequest/Response还是TcpClient或更底层的对象来写好?
需要的功能说起来很简单,就是例如用户访问Proxy.aspx?URL=http://msdn.microsoft.com的时候,网页就自动访问msdn.microsoft.com,并把获取到的返回原原本本的给回用户。
要求:(由最重要到次重要)
1.能够正确处理GET和POST,能够正确处理各种Encode的Request和Response,能够正确处理cookies。
2.有缓存机制,能够提高效率。
3.能够控制缓存大小、CPU和内存占用率、带宽占用等。
实际上这个东西我不是用于正向代理,而是用于反向代理,真正做的时候我会用HttpModule和HttpHandler。我希望能够好像MS ISA Server那样用,功能可以没有那么强大,不过最好将兼容性和可控制选项多一些。