c#websocket客户端无法连接到Service Fabric服务

时间:2018-01-17 15:19:06

标签: c# websocket azure-service-fabric

我有一个无状态服务充当api网关以及在安全服务结构集群(使用Azure AD)上部署到Azure的有状态服务。我暴露了一个websocket端点(wss)。从我的客户端应用程序(使用ClientWebSocket实例的控制台应用程序)连接时,我得到了#34;无法连接到远程服务器"内部异常说明:"身份验证失败,因为远程方已关闭传输流。"如果我附加了SSL证书(来自我的本地计算机),并且在我创建集群时使用ClientWebsocket对象传递了NetworkCredentials,则会发生这种情况。我点击的端点如下所示:wss://blahblahblah.cloudapp.azure.com:19000 / mygateway / data。当我在保护它之前在本地测试此代码时,我能够连接。成功部署到安全集群后,我的客户端应用程序无法连接。我需要从客户端提供其他东西才能通过安检吗?

public async Task<bool> ConnectAsync(Uri serviceAddress)
    {
        this._clientWebSocket = new ClientWebSocket();

        using (CancellationTokenSource tcs = new CancellationTokenSource(TimeSpan.FromSeconds(5)))
        {
            try
            {
                _clientWebSocket.Options.ClientCertificates = GetCertForRemoteAuthentication();
                _clientWebSocket.Options.Credentials = new NetworkCredential{Domain = "mydomain", Password = "somepassword", UserName = "username"};

                await this._clientWebSocket.ConnectAsync(serviceAddress, tcs.Token);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }


        }


        return true;
    }

1 个答案:

答案 0 :(得分:1)

通过指定特定端口并将该端点命名为我们的有状态服务,而不是我们的服务结构应用程序端点(在端口19000上) - 我们能够完成我们的服务。还必须在服务器代码上添加一些代码,以确保我们将服务器证书绑定到服务器端的websocket侦听器。这解决了我们的问题。