Код: Выделить всё
public async Task CreateTxtRecord(string domain, string value, string resourceGroup, string dnsZoneName)
{
try
{
var acmeChallengeDomain = $"_acme-challenge.{domain}";
var endpoint = $"https://management.azure.com/subscriptions/{SubscriptionID}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/dnsZones/{dnsZoneName}/TXT/{acmeChallengeDomain}?api-version=2018-05-01";
var requestObject = new DnsTxtRecordRequest
{
properties = new DnsTxtRecordRequestProperties
{
TTL = 3600,
TxtRecords = new List {
new TxtRecords
{
value = new List { value }
}
}
}
};
var serializedRequest = JsonConvert.SerializeObject(requestObject);
var requestMessage = new HttpRequestMessage(HttpMethod.Put, endpoint);
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Token);
requestMessage.Content = new StringContent(serializedRequest, Encoding.UTF8, "application/json");
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
var responseMessage = await client.SendAsync(requestMessage);
var content = await responseMessage.Content.ReadAsStringAsync();
if (responseMessage.IsSuccessStatusCode)
{
var responseObject = JsonConvert.DeserializeObject(content);
return true;
}
else
{
LastError = $"Failed to create TXT record set: {content}";
return false;
}
}
}
catch (Exception ex)
{
LastError = $"Failed to create TXT record set: {ex.Message}";
return false;
}
}
Код: Выделить всё
public class TxtRecords
{
//public string Name { get; set; }
public List value { get; set; }
}
public class DnsTxtRecordRequest
{
public DnsTxtRecordRequestProperties properties { get; set; }
}
public class DnsTxtRecordRequestProperties
{
public int TTL { get; set; }
public List TxtRecords { get; set; }
}
public class DnsTxtRecordResponse
{
public string id { get; set; }
public string name { get; set; }
public string type { get; set; }
public string etag { get; set; }
public DnsTxtRecordResponseProperties properties { get; set; }
}
public class DnsTxtRecordResponseProperties
{
public string fqdn { get; set; }
public int TTL { get; set; }
public List TxtRecords { get; set; }
public object targetResource { get; set; }
public string provisionState { get; set; }
}
Я ожидаю, что в моей DNS-зоне Azure будет создана запись TXT, содержащая имя, в моем случае _acme-challenge, и значение, которое является токен, связанный с этой задачей.
Подробнее здесь: https://stackoverflow.com/questions/785 ... e-rest-api
Мобильная версия