我目前正在尝试使用openstack.net sdk在Rackspace Cloud DNS服务上创建域名,但不会发生这种情况。
我得到了我的rackspace帐户,它已激活,我也获得了我的API密钥。
我写了一个控制台应用程序来测试我的代码,但结果始终是" WaitingForActivation"我无法使用openstack.net sdk找到关于cloudsDNS的任何文档。
任何人都可以看看我的代码,并告诉我,我做错了。
私有静态字符串RackSpaceUserName { 得到{return"用户名&#34 ;; } }
private static string RackSpaceUserApiKey
{
get { return "apikey"; }
}
private UserAccess RackSpaceUser
{
get
{
IIdentityProvider identityProvider = new CloudIdentityProvider();
var userAccess = identityProvider.Authenticate(Cloudidentity);
return userAccess;
}
}
private static CloudIdentity Cloudidentity
{
get
{
var ci = new CloudIdentity
{
APIKey = RackSpaceUserApiKey,
Username = RackSpaceUserName
};
return ci;
}
}
static void Main(string[] args)
{
var ParkedDomain = new CloudDnsProvider(Cloudidentity, null, true, null);
List<DnsDomainRecordConfiguration> dnsrecords = new List<DnsDomainRecordConfiguration>();
dnsrecords.Add(new DnsDomainRecordConfiguration(DnsRecordType.Ns, "testdomain.com", "dns1.stabletransit.com", TimeSpan.FromMinutes(20), null, null));
dnsrecords.Add(new DnsDomainRecordConfiguration(DnsRecordType.Ns, "testdomain.com", "dns2.stabletransit.com", TimeSpan.FromMinutes(20), null, null));
List<DnsSubdomainConfiguration> subdomains = new List<DnsSubdomainConfiguration>();
subdomains.Add(new DnsSubdomainConfiguration("info@testdomain.com", "test", ""));
DnsDomainConfiguration dnsd = new DnsDomainConfiguration("testdomain.com", TimeSpan.FromMinutes(20), "info@testdomain.com", "", dnsrecords, subdomains);
DnsConfiguration dnsconfig = new DnsConfiguration(dnsd);
var result = ParkedDomain.CreateDomainsAsync(dnsconfig, AsyncCompletionOption.RequestCompleted, CancellationToken.None, null);
Console.Write(result.Status);
Console.ReadLine();
}
result.Status的值总是返回&#34; WaitingForActivation&#34;,当我检查我的rackspace cloud dns仪表板时,没有创建域。
非常感谢任何帮助。
答案 0 :(得分:0)
DNS服务使用异步方法。 CreateDomainsAsync
返回的对象是Task
,表示异步操作,但该操作可能在调用返回之前未完成。您可以通过以下任何方法等待代码中的请求完成:
等待结果(只允许使用async
方法,Main
不能这样做。
await result;
访问Task<TResult>.Result
属性。
var completedResult = result.Result;
调用Task.Wait
方法。
result.Wait();