MongoDB的EC2 C#上传的问题 - 缺少关键?关键、上传、问题、MongoDB

2023-09-12 23:36:26 作者:独遇不与

寻找在这一个帮助。

我目前正在建设一个C#接口,最好应上传JSON文档转换成存储在EC2服务器上的MongoDB数据库。

到目前为止,我已经能够访问蒙戈实例使用腻子EC2服务器和产生的console线接口上,但我无法做到这一点在C#。每一次我已经得到了同样的错误:

 补充信息:无法连接到服务器bitnami@ec2-54-174-43-69.compute-1.amazonaws.com:22:过程中发生不可恢复的错误数据库查询。
 

在code我现在用的就是以下(用户名,修改隐私密码和数据库名称):

  //上传创建metadataObj。
            MetadataTemplate metaUpload = createMetadataObj();

            //上传到MongoDB的
            VAR的connectionString =的MongoDB://用户名:密码@汇出至@ ec2-54-174-43-69.compute-1.amazonaws.com:22 /数据库;
            VAR mongoEC2 =新MongoClient(的connectionString);
            VAR服务器= mongoEC2.GetServer();
            VAR数据库= server.GetDatabase(数据库);
            VAR收集= database.GetCollection< MetadataTemplate>(集合);

            //插入记录到数据库
            collection.Insert(metaUpload);
 

我想知道如果现在缺少的是,我不是包括AWS私钥(PPK),我在腻子使用。如果是这样的话,任何人都可以点我如何,我可以在蒙戈连接包括这个?截至目前,该MongoClient(的connectionString)是我唯一的连接蒙戈或EC2的形式。有没有必要说我失踪?

一个preliminary连接到EC2实例

话又说回来,我承认......我可能会丢失别的东西完全。所有的建议表示欢迎。

更新:

下面是code我用来创建一个SSH窗口。

  //上传创建metadataObj。
            MetadataTemplate metaUpload = createMetadataObj();

            //创建安全​​的SSH连接
            VAR密钥文件=新PrivateKeyFile(@C:\用户\ ahaque89 \文件\ AmazonUploader \资源\ MYOPENKEY.ppk);
            VAR密钥文件=新的[] {}密钥文件;
            VAR用户名=汇出;
            VAR方法=新的名单,其中,使用authenticationMethod>();
            methods.Add(新PrivateKeyAuthenticationMethod(用户名,密钥文件));
            VAR CON =新ConnectionInfo(@ec2-54-174-43-69.compute-1.amazonaws.com,22,用户名,methods.ToArray());

            //连接通过SSH客户端
            使用(VAR的客户=新SshClient(CON))
            {
                client.Connect();
                VAR CMD = client.RunCommand(LS);
                无功输出= cmd.Result;
                的MessageBox.show(output.ToString()); //成功作品

                //上传到MongoDB中(EC2服务器)
                VAR的connectionString =的MongoDB://用户名:密码@汇出至@ ec2-54-174-43-69.compute-1.amazonaws.com:22;
                VAR mongoEC2 =新MongoClient(的connectionString);
                VAR服务器= mongoEC2.GetServer();
                VAR数据库= server.GetDatabase(数据库);
                VAR收集= database.GetCollection< MetadataTemplate>(集合);

                //插入记录到数据库
                collection.Insert(metaUpload); //创建错误
            }
 
MongoDB操作最佳实践 三

解决方案

看起来这个功能目前还不支持在MongoDB的C#的驱动程序。请参阅从克雷格响应这里: https://groups.google.com/forum/#​​!topic/mongodb -csharp / b8PS4Qz9gjg

Looking for help on this one.

I'm currently building a C# interface that should ideally upload JSON documents into a MongoDB database stored on an EC2 Server.

So far, I've been able to access the instance of Mongo on the EC2 server using PuTTY and the resulting console line interface, but am unable to do this in C#. Each time I've been getting the same error:

Additional information: Unable to connect to server bitnami@ec2-54-174-43-69.compute-1.amazonaws.com:22: A non-recoverable error occurred during a database lookup.

The code I am using is below (username, password, and database name modified for privacy):

            // Create a metadataObj for upload.
            MetadataTemplate metaUpload = createMetadataObj();

            // Upload to MongoDB
            var connectionString = "mongodb://USERNAME:PASSWORD@bitnami@ec2-54-174-43-69.compute-1.amazonaws.com:22/DATABASE";
            var mongoEC2 = new MongoClient(connectionString);
            var server = mongoEC2.GetServer();
            var database = server.GetDatabase("DATABASE");
            var collection = database.GetCollection<MetadataTemplate>("COLLECTION");

            // Insert record into DB
            collection.Insert(metaUpload);

I am wondering if what's missing is that I'm not including the AWS Private Key (ppk) that I use in PuTTY. If this is the case, can anyone point me to how I can include this in the Mongo connection? As of now, the MongoClient(connectionString) is my only form of connection to Mongo or EC2. Is there a preliminary connection to the EC2 instance necessary that I'm missing?

Then again, I admit... I may be missing something else completely. All suggestions welcome.

UPDATE:

Below is the code I am using to create the SSH window.

            // Create a metadataObj for upload.
            MetadataTemplate metaUpload = createMetadataObj();

            // Create Secure SSH Connection
            var keyFile = new PrivateKeyFile(@"C:\Users\ahaque89\Documents\AmazonUploader\Resources\MYOPENKEY.ppk");
            var keyFiles = new[] { keyFile };
            var username = "bitnami";
            var methods = new List<AuthenticationMethod>();
            methods.Add(new PrivateKeyAuthenticationMethod(username, keyFiles));
            var con = new ConnectionInfo(@"ec2-54-174-43-69.compute-1.amazonaws.com", 22, username, methods.ToArray());

            // Connect through SSH Client
            using (var client = new SshClient(con))
            {
                client.Connect();
                var cmd = client.RunCommand("ls");
                var output = cmd.Result;
                MessageBox.Show(output.ToString()); // Works successfully

                // Upload to MongoDB (ec2 server)
                var connectionString = "mongodb://USERNAME:PASSWORD@bitnami@ec2-54-174-43-69.compute-1.amazonaws.com:22";
                var mongoEC2 = new MongoClient(connectionString);
                var server = mongoEC2.GetServer();
                var database = server.GetDatabase("DATABASE");
                var collection = database.GetCollection<MetadataTemplate>("COLLECTION");

                // Insert Record into DB
                collection.Insert(metaUpload); // Creates error
            }

解决方案

It looks like this feature isn't yet supported in the MongoDB C# Driver. See response from Craig here: https://groups.google.com/forum/#!topic/mongodb-csharp/b8PS4Qz9gjg