VaultSharp软件包似乎包含了我想要的所有内容,并且有据可查。我试图使用VaultSharp软件包从Vault服务器读取我们的机密。但是我生锈的C#在下面的“ Secret<SecretData> kv2Secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync("/secret/my_corp/my_app/dev/db_creds");
”行中将我拦住,并显示错误消息:
“ await”运算符只能在异步方法中使用。 考虑使用“异步”修饰符标记此方法并进行更改 其返回类型为“任务”。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VaultSharp;
using VaultSharp.V1.AuthMethods.AppRole;
using VaultSharp.V1.AuthMethods;
using VaultSharp.V1.Commons;
using VaultSharp.V1.AuthMethods.Token;
namespace VaultConsoleApp
{
class Program
{
static void Main(string[] args)
{
var vaultUrl = "https://vault-server.url.com:443";
Program.by_token(vaultUrl);
}
static void by_token(string vaultUrl)
{
// Initialize one of the several auth methods.
IAuthMethodInfo authMethod = new TokenAuthMethodInfo("s.R2gFHDiup5wCeHHksfc2zKUN");
// Initialize settings. You can also set proxies, custom delegates etc. here.
var vaultClientSettings = new VaultClientSettings(vaultUrl, authMethod);
IVaultClient vaultClient = new VaultClient(vaultClientSettings);
// Use client to read a key-value secret.
Secret<SecretData> kv2Secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync("/secret/my_corp/my_app/dev/db_creds");
}
}
}
复制的
答案 0 :(得分:2)
错误告诉您确切的信息。虽然让我们推断:
“ await”运算符只能在异步方法中使用。 考虑 用“ async”修饰符标记此方法并更改其返回值 键入“任务” 。
static async Task Main(string[] args)
{
var vaultUrl = "https://vault-server.url.com:443";
await Program.by_token(vaultUrl);
}
static async Task by_token(string vaultUrl)
{
...
Secret<SecretData> kv2Secret = await vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync("/secret/my_corp/my_app/dev/db_creds");
}
这时,您应该对 async and await 模式进行一些研究:
答案 1 :(得分:0)
除了使方法异步之外,您还可以删除“ await”,这将使其同步而不是异步。
var kv2Secret = vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync("/secret/my_corp/my_app/dev/db_creds");
对您来说最好的选择取决于您的用例,因此我建议像其他答案中所建议的那样先对其进行阅读。