1

I am trying to connect tls enabled dgraph server using c# .net for that I have written below console application

class DGraphClient
    {
        public IDgraphClient GetDgraphClient()
        {
            
            GraphSchemaIOConnection ConnectionConfig1 = new GraphSchemaIOConnection();
            ConnectionConfig1.Endpoint = "testdgraph.abc.tech:9080";
            DgraphInstance GSioDgraph = new DgraphInstance();
            DgraphCertificates certificates = new DgraphCertificates();
            certificates.CaCert = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURVekNDQWp1Z0F3SUJBZ0lJR1dnMnhpbzVMYVl3RFFZSktvWklodmNOQVFFTEJRQXdSakVhTUJnR0ExVUUKQ2hNUlJHZHlZWEJvSUV4aFluTXNJRWx1WXk0eEZ6QVZCZ05WQkFNVERrUm5jbUZ3YUNCU2IyOTBJRU5CTVE4dwpEUVlEVlFRRkV3WXhPVFk0TXpZd0hoY05NakV3TWpJeU1EWXpORFU0V2hjTk16RXdNakl5TURZek5EVTRXakJHCk1Sb3dHQVlEVlFRS0V4RkVaM0poY0dnZ1RHRmljeXdnU1c1akxqRVhNQlVHQTFVRUF4TU9SR2R5WVhCb0lGSnYKYjNRZ1EwRXhEekFOQmdOVkJBVVRCakU1Tmpnek5qQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQwpBUW9DZ2dFQkFNeTV4RHN4eXhoTVpUM01TMGplcS9qOGFMM2tCZHZWcmNSS2lTUjY5MFZ1L2xKREk1Zm5tdHduCjN2WWxNbXQyNEVmQ0x4Rzk2S3dqZ3ZVZlBNZFI3WGM2RFFlUWpmanA1TXBaV2VwMzdxWTVURExLcC9YNEF0WUIKcU5reVlQSFo4R1BYOVN1Zk9jSk5vdUZtWStpeDY5L2VkTlpMczA5SC93STd4dDlpREExTzBQVVQ1Z00yZi9vLwp5d2Rpb2J0S3dpNmszY2VxTTRPZ2dLUE92d0k2K0ViOE9TM0wwZ3VIQ05IaHJxM3VjblJKeE5yaWZvNnNoTEhECkdXQ3BRbXRWZDM0azVsY3dVakdBa2k2VTJONU9Yc09TRmozbU1MTnNnaThUeFFWYWlSQzFhNjRqamJKUGVDb0kKNkduamgvb3cwMFpIa05seFBqZWI4Umx5ZzM2RkJEc0NBd0VBQWFORk1FTXdEZ1lEVlIwUEFRSC9CQVFEQWdMawpNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3SFFZRFZSME9CQllFRk5HUlQxdkZJSTNiZnBQYk5LcnpnQXBEClJJcGlNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFBWGQ5VXRaYk54Ny8wbjNXMnNVcG9GVVRJTGlsRkc3d0sKY1pMamtxZyt0dXJ5SFd1YVcvcW5NRC9oSTRGeW1lb211Y0hzclhVUVBiLzVTVEl1NkczQWp0U3pxL2o2OVkvQgp4M2RvdGdibStLME9aYmJKRGpwcU1CZnFqSFJCSm1sL0VGcTZ1ME56eGxYd3ZWRDU5SFF6OThpWFZZTzBDYmFnClN4OFFpbUVTWjJ4Mk5vdkZ1c3JHNHhickRaKzlDa1ZvN25OeWliMGZETm4vaXhvZDBRNmVod1d4aXNYV1cxblIKbFd4SzR6aUsxNzNyS1lqQVBaVUxmNEFLR0h5R1pxeU9xaG9EVEczelU4Y2hmYmcyUW9ZOHdZSGZVNGpHb3RKMQp6UCsyenhRR1pyQkFhWVdaakw0TUdyd09BeVEzdGRUSjRURWozZHgwL2hOaGEwbHhIZTVVCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K";
            certificates.ClientCert = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURWVENDQWoyZ0F3SUJBZ0lJS2Y3WjVYVlVIVjh3RFFZSktvWklodmNOQVFFTEJRQXdSakVhTUJnR0ExVUUKQ2hNUlJHZHlZWEJvSUV4aFluTXNJRWx1WXk0eEZ6QVZCZ05WQkFNVERrUm5jbUZ3YUNCU2IyOTBJRU5CTVE4dwpEUVlEVlFRRkV3WXhPVFk0TXpZd0hoY05NakV3TWpJeU1EWXpORFU1V2hjTk1qWXdNakl6TURZek5EVTVXakJGCk1Sb3dHQVlEVlFRS0V4RkVaM0poY0dnZ1RHRmljeXdnU1c1akxqRVdNQlFHQTFVRUF4TU5kbWx6ZFhKeFlXUm4KY21Gd2FERVBNQTBHQTFVRUJSTUdNamxtWldRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQXF1QU04ZnlhY3l2QW42VDF2TTNsRWYrYm9QendRdVlBTW5zaFNmNjFuZVhFVTNlZ3l5cmFLSVg1CjNrSkhIV0JqSGE1T2lNUG1ib3pWT2phUldlZGVXZDdTWmozb0IwV3NEd3YzTHhuN0dPUThHQU5UU3VTMURadFYKczBSMkhIamJUM0I1WHRHeXdNVTFORHkwcTZDNXdVT1NOSk85cWhKOW4wMUwrK3ltT3RYd3JCbUhlaVVhd21vRAp2c21mWFlUREJiUC93V0lYeW5vYkd5N3R6cEtteWRmOHErcm0zd0VKQ3FTNGNEVHlwVU0rdWZIVElPYXZXQWE0CnpyUXZ0Mk11bVRiclJSWlRZUVZmdU9jbkduQ3pSS0hjQ2RJWWdFcTl3Zmx0WjRZQjAydUtYZHY2Tkw5aGJrRXYKUmozNlZUMithaG5CS2FZM1l4d0xOVGNqWWxqeXlRSURBUUFCbzBnd1JqQU9CZ05WSFE4QkFmOEVCQU1DQjRBdwpFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3SHdZRFZSMGpCQmd3Rm9BVTBaRlBXOFVnamR0K2s5czBxdk9BCkNrTkVpbUl3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUFrYWprLzNmMUo2bDBVZWZPM0ozNEpYOGszMTM4N1oKY1BZaWt1Z1A3M2wwT3dnc2oxY3VHODh3UXczREdDN3NPNlVQU0lzQ2ZHdXlVVzJmZG1QSFN5V3hxbGFGTnN2Zwo3WithVE92aHBYNGVuYTNUcE9lb0FKdUlXOVRjendLZjdBbWo2VEY1MjNaQWtkOVhhcTZMaVVwR0QzdFdhajgxCmRBK3dRVTgvaE5tZ29GR2lhVmFqYm9wVFU0K0hvTG9HWExuTTY3dU5TdGJEQ05uVlluZExDTHpDM1BORUtEYVAKdC9kMEQvczB6L1lnMi9ZaEFlMzV6WTIzNytFbkZXMCsrbG5wUEtZNFFuY1ozL3ZYN1lhYTlRejZKSFgxOG9oUwpJbVVuUEtsMzlJT21ocEJNckdCK2JxRTRTMFM1eXB3NUl6WUtMLzVsRnVtZVZoSVFoLzVmdHZRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg";
            certificates.ClientKey = "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBcXVBTThmeWFjeXZBbjZUMXZNM2xFZitib1B6d1F1WUFNbnNoU2Y2MW5lWEVVM2VnCnl5cmFLSVg1M2tKSEhXQmpIYTVPaU1QbWJvelZPamFSV2VkZVdkN1NaajNvQjBXc0R3djNMeG43R09ROEdBTlQKU3VTMURadFZzMFIySEhqYlQzQjVYdEd5d01VMU5EeTBxNkM1d1VPU05KTzlxaEo5bjAxTCsreW1PdFh3ckJtSAplaVVhd21vRHZzbWZYWVREQmJQL3dXSVh5bm9iR3k3dHpwS215ZGY4cStybTN3RUpDcVM0Y0RUeXBVTSt1ZkhUCklPYXZXQWE0enJRdnQyTXVtVGJyUlJaVFlRVmZ1T2NuR25DelJLSGNDZElZZ0VxOXdmbHRaNFlCMDJ1S1hkdjYKTkw5aGJrRXZSajM2VlQyK2FobkJLYVkzWXh3TE5UY2pZbGp5eVFJREFRQUJBb0lCQURmcjYxQ21vc1ZlWkVQYQo4TEZCa040N0VPdTIyOHFKQ3pkNkpJTGE0UVV6MVBTY0NmdHpvc0h3VnIzdVl1ZXlTNzNDOWVDOGZBVmlBY1p6ClpVNU84Z25uYW1RYmpud1N5U1NEZmZua1B0RCtvTXdiQ245UUtoQ3g3WElsemFHenk5Skx0T3piSSswQ25VN2oKTHgyY0ZDNnp0bjJPZkZ2VWdWaEpLN3plemVnaTR4cU1KVm5WY0hucXhnVDIzeW9aQ1Jxcnk5RWpTSjhXUlJuUgpJSWtzZEUrNk9DelJFMmZmekNNTjFKZWREOUlIdlQ0RFBDOVJBdndnR1ZWMjFaTTIzUDM3d3JlS3R6SzEvYkozCmpIOGdmNWFRYVRmM2xndHQ2T2pSY2dPM0xyL094QjFIdGcxa3FGbTJxRktGQVhjcDBEZVp5ZWt4UiszS2NmOFEKc2w0TnQ2RUNnWUVBMWRNdFBmeXF6Z1VYbEt4ZlkyL1dNVWJjVy9JV1ZXczlyN2VkaExEUUJVS3k5Q0R4b3BqTApFNEZKTXhrSngwUGRsUUkxSU5DQ2lZeVZyM3ZhVnQzd3ZmY0FoNFZMTWsvYnhWcFB5NEM3MDZtS1YydUdCZFV1CmFOREVJbkhGUVM2RTJEa0FJNVlNWGdyQVdJU0RwNVc5ZVlvK3hLbW5HdVJTbkZSRlFBZjBiN2NDZ1lFQXpKUXUKZGVwbEV2cE1uQ1VTYnJkQWg4Vkc1bWFPeFJ6aXpZeGNySUNmLzlHa1VZR1ozMjNNcjFIYk1OMS9ycGNRNFNCNgorYlVweHhzaTNQT05uTU9IRUFubTc3R0FTRmZDd2tjSjlFeXZRVXpLOExSd3czbFFtMVRGMDNIR3BLMjNNVEJGCmdKNzBFUkFQUitUK2pIZkFXUm5LdkV3YjcxZFNqZjFGdFZmb3NYOENnWUVBaXRSVTRKVkhkUUliWUYxV2hhSmMKU0p4QWdMWTZ4L1VjRlJXN2dTYW51WEtuN0JmanEzVlhETy81VGVMbzFXYjczRDZWcmh1VFZhbGdtcEpvbmRQMQo5ZkVFZC9rVWJMTXE5d1QvSUJzU1dJZ1FtVmZucWF2VE9SeXE2ODVBaTJTZnZoK3NObTY2MHVoYUlGN1JlQ0toCjVlTGJoQ2ErcDVndEJ2RTBFVEhaQkJzQ2dZQmxxUkU1YVdRV3ZTa0t3dVZZL1ZsazNxU3Y0N0Q0eExUei9kY2oKcGJ0Y2pab0JJczBMR1c0SWhUM09GNVBXZDUxY3NoNUtManQzaE1XYlZMQS9nVzZCaXRvbXJHY2FDL3B0UG8zMAp4NUtqZVh5emhvY3VxLzloWVF2NVdlV2plZXU1MXNvQzgzcEhiRnFibUhEaDdyUTMwcmhMUCtyMTBjZmxaVUdaCnJ2aWtFd0tCZ0QzbjJSNDNHQWZlTnV6V25NZEtDT3BXWTJVQVZHdG5Tbmx2bWhDcHVLM0hnVmV4RGd6d0g1U0YKeG9kNE04U1pBV3lNSGxBcGx2VEFrWE9JWGdHYjgrQVl5aklPVVMybTZocHFlMk1neVZobGZuWFIxeWwrUXJiNwovY0FsN3RpR0kvcmJDZFYvVFpLTVJHN0ZyUVFUK0p2NFErbTlKT0EwNldWMTYrTU5ZNXAwCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg";
            GSioDgraph.Certificates = certificates;
            GSioDgraph.Address = "testdgraph.abc.tech:9080";
            if (ConnectionConfig1.Endpoint.Equals("localhost"))
            {
                var client = DgraphDotNet.Clients.NewDgraphClient();
                client.Connect("");
                return client;
            }
            else
            {
                var client = DgraphDotNet.Clients.NewDgraphClient();

                var caCert = GSioDgraph.Certificates.CaCert;
                var clientCert = GSioDgraph.Certificates.ClientCert;
                var clientKey = GSioDgraph.Certificates.ClientKey;
                var tls = new SslCredentials(caCert, new KeyCertificatePair(clientCert, clientKey));

                client.Connect(GSioDgraph.Address, tls);



                //   var  result =  client.CheckVersion();


                return client;
            }
        }

and calling check version using below code

 DGraphClient dc = new DGraphClient();
            try
            {
                var dgraphClient = dc.GetDgraphClient();


               
                var result1 = await dgraphClient.CheckVersion();

                if (result1.IsSuccess)
                {
                    Console.WriteLine("Connected to Dgraph version {Version}", result1.Value);

                }


                var res = await dgraphClient.Query(query);//.NewTransaction().Query(query);
                if (res.IsFailed)
                {
                    Console.WriteLine("ERROR THROWING");
                }
                result = res.Value;
                await dgraphClient.NewTransaction().Commit();
              
            }
            catch (Exception ex)
            {
                throw ex;

            }

after instanciate client I am just checking server version to make sure its connected but failed with grpc {Result: IsSuccess='False', Reasons='ExceptionalError with Message='Status(StatusCode=Unavailable, Detail="Empty update")', Exception='Grpc.Core.RpcException: Status(StatusCode=Unavailable, Detail="Empty update")\r\n at DgraphDotNet.GRPCConnection.CheckVersion()\r\n at DgraphDotNet.DgraphClient.CheckVersion()'', }

enter image description here

Harsha Murupudi
  • 579
  • 1
  • 6
  • 19
  • is there any refrance for c# dgraph tls – vikashsingh9 Mar 04 '21 at 04:26
  • I don't think Grpc itself ever generates an error with status code Unavailable and detail message "Empty update". From what you described, the gRPC connection was actually successful and the RPC on the server side actually got invoked, but the server side handler returned an error (but the application code did that, not grpc itself). I think you need to consult Dgraph source code / documentation to see why the call is failing. – Jan Tattermusch Mar 04 '21 at 08:32

0 Answers0