4

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が社外でホストされているリモートシステムからメッセージを受信できるようにするクライアントのために私が行っている作業に必要です。

ありがとう!

4

1 に答える 1

2

DefaultWebProxyを設定してみてください。

WebProxy wproxy = new WebProxy("new proxy",true);
wproxy.Credentials = new NetworkCredential("user", "pass");
WebRequest.DefaultWebProxy = wproxy;
于 2012-11-14T11:09:33.977 に答える