C# 如何通过web代理使用.Net远程处理?

C# 如何通过web代理使用.Net远程处理?,c#,.net,wcf,proxy,remoting,C#,.net,Wcf,Proxy,Remoting,我正在编写的一个应用程序需要使用.Net远程处理(我知道WCF是“新事物”,但不幸的是,目前我们还不能使用它) 无论如何,如果我不尝试通过代理使用应用程序,那么一切都可以正常工作。但是,应用程序需要能够通过代理web服务器运行。我设置了一个HttpChannel,并将“proxyName”和“proxyPort”属性设置为正确的值。这允许通道使用代理服务器,没有问题 我有以下问题: 1:如果代理服务器需要身份验证,则似乎无法设置通道使用代理进行身份验证时应使用的凭据。我尝试了“凭据”属性、“用户

我正在编写的一个应用程序需要使用.Net远程处理(我知道WCF是“新事物”,但不幸的是,目前我们还不能使用它)

无论如何,如果我不尝试通过代理使用应用程序,那么一切都可以正常工作。但是,应用程序需要能够通过代理web服务器运行。我设置了一个HttpChannel,并将“proxyName”和“proxyPort”属性设置为正确的值。这允许通道使用代理服务器,没有问题

我有以下问题:

1:如果代理服务器需要身份验证,则似乎无法设置通道使用代理进行身份验证时应使用的凭据。我尝试了“凭据”属性、“用户名”和“密码”属性,但似乎都不起作用。因此,在代理服务器需要身份验证的情况下,最终结果是,只要调用远程方法,就会返回身份验证错误

2:我似乎无法让HttpChannel使用默认的系统web代理。如果将Internet Explorer配置为使用代理,我应该可以使用WebRequest.GetSystemWebProxy()来获取它。但是,这将返回一个IWebProxy,我无法从中提取主机和端口。如果有人知道这样做的方法,我将不胜感激

令人沮丧的是,如果您使用VisualStudio单步执行代码并检查HttpChannel类,则存在一个WebProxy对象。如果他们能提供这种服务,生活会轻松得多

因此,基本上我要问的是,我到底如何获得一个HttpChannel来正确使用web代理——记住,我需要能够使用需要身份验证的代理,并且能够自动检测internetexplorer代理设置?有没有更简单的方法来实例化通道,这样我就可以将代理对象作为参数传递给它


非常感谢您的帮助

我已经找到了这个问题的解决方案(不幸的是,我丢失了导致我这样做的博客地址-如果我能再次找到它,我将给予应有的信任),并且它工作得非常完美。对于感兴趣的任何人,请添加以下代码:

    private static void SetChannelProxy(HttpClientChannel channel, IWebProxy proxy)
    {
        FieldInfo proxyObjectFieldInfo = typeof(HttpClientChannel).GetField("_proxyObject", BindingFlags.Instance | BindingFlags.NonPublic);

        proxyObjectFieldInfo.SetValue(channel, proxy);
    }
您应该首先使用要使用的凭据配置代理对象,然后使用要用于代理的通道调用此方法