c# - SignalR C# 客户端 407 需要代理身份验证

标签 c# winforms signalr signalr.client

我正在尝试构建一个 C# SignalR 应用程序(服务器上的控制台应用程序,客户端上的 winforms 应用程序),当客户端和服务器都在同一台 PC 上时,它工作得很好(在 Visual Studio 中),但是当我部署了服务器并将客户端重新指向服务器,当它尝试启动时出现“407 需要代理身份验证”异常。

这是我的代码...

        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 能够从公司外部托管的远程系统接收消息。

谢谢!

最佳答案

尝试设置 DefaultWebProxy:

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

关于c# - SignalR C# 客户端 407 需要代理身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13375897/

相关文章:

c# - Signalr 在生产服务器中总是陷入长轮询

c# - ALL_UPPER 常量的 ReSharper Intellisense

c# - 最终用户机器上的 C# 数据库 Access 需要 Microsoft Access 吗?

c# - 弱引用优势

javascript - 使用抽象模型的信号器客户端到服务器的推送

asp.net-core - Signalr.js 未找到

c# - 二维数组到一维并再次返回

c# - WCF 异常--故障状态

c# - DataGridView 滚动点击后跳转到顶部

c# - 如何保证在双屏场景下 "additional"屏显示一个窗体?