Tag: 代理

套接字性能C ++或C#

我必须编写一个基本上是代理服务器的应用程序来处理来自我们服务器的所有HTTP和HTTPS请求(Web浏览等)。 我对C ++知之甚少,并且很乐意在C#中编写应用程序function。 我已经尝试使用Mentalis (C#套接字代理)的代理,它似乎适用于小型网页,但如果我访问像tigerdirect.ca这样的大型网站并浏览几层,则速度非常慢,有时请求无法完成我看到破碎的图像和javascript错误。 所有供应商站点和其他内容繁重的站点都会发生这种情况。 Mentalis使用HTTP 1.0,我知道它不是那么有效但是代理应该那么慢吗? 使用代理可以承受的性能损失是多少? HTTP 1.1会有明显的区别吗? C ++代理会比C#中的代理快得多吗? Mentalis代码效率不高吗? 我是否能够使用预制的C ++代理并将DLL导入C#并仍然获得良好的性能,或者该项目是否会调用所有C ++? 很抱歉,如果这些是明显的问题,但我之前没有做过网络编程。 编辑回应Joshua的问题:我不一定需要自己编写核心代理服务器,只要有一个很好的实现,但就像我说我一直在试验Mentalis那样表现不佳。 最终的应用程序需要从单个安装程序安装在Windows PC / Server上,手动配置为0。 我可以在安装程序中编写所有必要的注册表编辑,就像我之前在C#中所做的那样。 更新我接受了Aaronaught的建议,并研究改进Mentalis的代码。 我修复了一个问题,因此它适用于HTTP 1.1,允许它与Chrome和Firefox一起使用(Windows上的Safari 4因某些原因导致代理崩溃)。 当我在FireFox和Chrome中测试时,我发现性能问题并不存在,这意味着IE问题不是代理问题。 重置浏览历史记录设置后,问题就消失了。 感谢大家!

SignalR:生成的代理与动态创建的集线器文件

SignalR集线器代理生成器的输出是否与动态生成的集线器代理文件基本相同? 如果没有,有什么区别? 关于我的问题的一些背景:由于执行期间的依赖性问题,我正在努力使用命令行工具创建集线器代理,我认为获取动态生成的文件可能是一种更简单的方法。

“使用”语句中的exception,WCF没有正确关闭连接。 如何关闭故障WCF客户端连接或具有exception的连接?

关于关闭WCF连接的StackOverflow有几个问题,但排名最高的答案是指这个博客: http://marcgravell.blogspot.com/2008/11/dontdontuse-using.html 当我在服务器上设置断点并让客户端挂起超过一分钟时,我遇到了这种技术的问题。 (我故意创建超时exception) 问题是客户端似乎“挂起”,直到服务器完成处理。 我的猜测是,一切都在exception后被清理干净。 关于TimeOutException ,似乎客户端的retry()逻辑将继续一遍又一遍地重新提交查询到服务器,在那里我可以看到服务器端调试器对请求进行排队,然后同时执行每个排队请求 。 我的代码不希望WCF这样做,可能是我看到的数据损坏问题的原因。 有些东西并没有完全加入这个解决方案。 什么是在WCF代理中处理故障和exception的无所不包的现代方法?

将服务引用添加到共享类的多个WCF服务

我正在尝试将我的WCF Web服务拆分为一些服务而不是一个巨大的服务。 但Visual Studio(Silverlight客户端)复制了两个服务共享的公共类。 这是一个简单的例子来说明我的问题。 在此示例中,有两个服务。 两者都返回“Person”类型。 默认情况下,VS将在唯一的NameSpaces下创建两个单独的Person代理。 这意味着不同服务返回的“Person”不能被客户端消费为同一个东西。 我该如何解决? 是否可以自己编写代理类? 共同 [DataContract] public class Person { [DataMember] string FirstName { get; set; } [DataMember] string LastName { get; set; } [DataMember] string PrivateData { get; set; } } StaffService.svc [ServiceContract(Namespace = “”)] public class StaffService { [OperationContract] public Person GetPerson () { return new […]

使用套接字的简单Http代理:问题

我正在尝试学习C#中套接字的工作原理。 我的想法是编写一个简单的http代理:这是我的代码: using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text; using System.Text.RegularExpressions; using System.Threading; class Program { static void Main(string[] args) { ThreadPool.SetMaxThreads(1000, 500); ThreadPool.SetMinThreads(500, 250); TcpListener listener = new TcpListener(IPAddress.Any, 8282); listener.Start(); while (true) { Socket client = listener.AcceptSocket(); ThreadPool.QueueUserWorkItem(ProcessSocket, client); } } private static readonly string patternHostPort = @”(Host:\s)(\S+)(:)(\d+)”; private static […]

在Web浏览器控件中设置代理凭据

我正在处理一个遗留代码,其中一个应用程序使用AxSHDocVw.AxWebBrowser ( 而不是 System.Windows.Forms.Control )来打开网页并扩展它以考虑代理。 我在http://www.pinvoke.net/default.aspx/wininet/internetsetoption.html上有以下示例,使用InternetSetOption()来浏览指定的代理并测试它是否有效。 现在的障碍是我尝试了一切,但未能通过以下代码传递用户名和密码: //– Set Proxy Username bool resultF = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_USERNAME, username, username.Length+1); var errorF = Marshal.GetLastWin32Error(); //– Set Proxy Password bool resultG = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_PASSWORD, password, password.Length+1); var errorG = Marshal.GetLastWin32Error(); resultF和resultG返回true并且没有错误但它仍然有效。 有关这里可能发生的事情的暗示吗? 我有什么方法来调试这个? 提前致谢。

透明代理通过https访问时出现SSL错误

在我的公司环境中,有一个透明的代理,需要互联网访问凭证(每四个小时)。 在我的应用程序中,我成功传递了这样的凭据 var client = new WebClient(); client.Credientals = new NetworkCredential(“username”, “password”); string result = client.DownloadString(“http://…”); // this works! 但是,当我的初始请求是“https://”url时,会发生exception抛出:“底层连接已关闭:无法为SSL / TLS安全通道建立信任关系。” 现在我目前的工作是: 捕获访问“https://”url时抛出的WebException 将我的凭据添加到对任意“http://”站点的新请求 (这应该“打开”互联网四小时的窗口) 返回并重新尝试“https://”请求 我想知道是否有更好/更清洁的方法来做到这一点?

以编程方式设置代理地址,端口,用户名,密码

嗨,我需要以编程方式设置IE的代理地址 之前我曾经使用过RedTomahawk.TORActivator,但它没有提供设置需要用户名和密码的代理的选项。 我们如何设置需要用户名和密码的代理 请提供类似的示例 void Setproxy(string ip,string port,string uname,string pwd) { ///Code here }

XMLDocument.Load(url)通过代理

我有一些代码基本上使用XMLDocument.Load(uri)方法读取XML文档,该方法工作正常,但如果通过代理进行调用则不能很好地工作。 我想知道是否有人知道通过代理进行此调用(或达到相同效果)的方法?

.NET代理检测

我遇到.NET检测通过Internet Explorer配置的代理设置的问题。 我正在编写一个支持代理的客户端应用程序,并测试我设置了一个包含9个squid服务器的数组,以支持HTTP和HTTP的各种身份validation方法。 我有一个脚本,可以将IE更新为我选择的任何配置(哪个代理,通过“Auto”,PAC或硬编码进行检测)。 我已经尝试了以下3种方法来通过.NET检测IE配置。 在我看来,我发现.NET选择了错误的代理服务器集。 IE有正确的设置,如果我用IE浏览网页,我可以看到我通过wireshark击中了正确的服务器。 WebRequest.GetSystemWebProxy().GetProxy(destination); GlobalProxySelection.Select.GetProxy(destination); WebRequest.DefaultWebProxy 以下是我的提示: 我的脚本在Web服务器上设置PAC文件,并在IE中更新配置,然后清除IE的缓存 .NET似乎“卡在”某个代理配置上,我必须为.NET设置另一个配置以实现更改。 偶尔它似乎会选择一些随机服务器(我确定它们不是随机的,只是我曾经使用过的一组服务器,并且在一些缓存的PAC文件中)。 在中,我将检查目的地“https://www.secure.com”的代理,我可能已配置IE,因此期望得到“http:// squidserver:18”而它将返回“http” :// squidserver:28“(端口18运行NTLM,28运行没有身份validation)。 所有的鱿鱼服务器都有效。 这似乎不是XP上的问题,只有Vista,2003和Windows 7。 在IE中硬编码代理服务器总是有效 时间总能解决问题 – 如果我离开计算机大约20或30分钟并回来,.NET会选择正确的代理设置,就好像缓存的PAC脚本已过期一样。