SignalR C#Client 407需要代理验证

时间:2012-11-14 09:14:46

标签: c# winforms signalr signalr.client

我正在尝试构建一个C#SignalR应用程序(服务器上的控制台应用程序,客户端上的winforms应用程序),当客户端和服务器位于同一台PC上时,它运行良好(在Visual Studio中),但是我部署服务器并将客户端重新指向服务器,当它尝试启动时,我得到“407 Proxy Authentication Required”异常。

这是我的代码......

        var _connection = new HubConnection("http://www.redacted.com:8088/");
        var _hub = _connection.CreateProxy("MyHub");
        _connection.Start().ContinueWith(task =>
        {
            if (task.IsFaulted)
                MessageBox.Show(string.Format("Could not connect - {0}", task.Exception.ToString()));
        }).Wait();

我注意到HubConnection有一个Credentials属性,所以我想在处理代理时尝试重新替换一些我用过WebServices的代码(如下所示,我只是发出一个HTTP请求,然后拿起代理设置和凭据来自),但我得到了同样的例外。

        var _connection = new HubConnection("http://www.redacted.com:8088/");

        var req = (HttpWebRequest)WebRequest.Create("http://www.google.com");
        var proxy = new WebProxy(req.Proxy.GetProxy(req.RequestUri).AbsoluteUri) {UseDefaultCredentials = true};
        _connection.Credentials = proxy.Credentials;

        var _hub = _connection.CreateProxy("MyHub");
        _connection.Start().ContinueWith(task =>
        {
            if (task.IsFaulted)
                MessageBox.Show(string.Format("Could not connect - {0}", task.Exception.ToString()));
        }).Wait();

这是我为客户做的一些工作所必需的,他们希望本地PC能够从公司外部托管的远程系统接收消息。

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试设置DefaultWebProxy:

WebProxy wproxy = new WebProxy("new proxy",true);
wproxy.Credentials = new NetworkCredential("user", "pass");
WebRequest.DefaultWebProxy = wproxy;