Azure DNS создает запись TXT без вставки свойства значения с помощью Azure REST APIC#

Место общения программистов C#
Ответить
Anonymous
 Azure DNS создает запись TXT без вставки свойства значения с помощью Azure REST API

Сообщение Anonymous »

Я пытаюсь создать записи TXT для проверки владения доменом в своей зоне DNS Azure. Я пытаюсь добиться этого программно, используя Azure REST API.

Код: Выделить всё

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;
}
}
Я пытался создать объекты Req/Res, которые можно сериализовать и десериализовать. Может быть, я ошибаюсь? Кажется, я не могу найти ничего конкретного о записях TXT, кроме использования .NET SDK. Но происходит следующее: запись успешно создается в зоне DNS, но свойству value не присваивается значение (это токен, полученный в результате запроса). Вот мои объекты req/res, в которых используются записи TXT.

Код: Выделить всё

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; }
}
Я попытался вставить значение вновь созданного TxtRecord как отдельную строку, а не как вложенную в список. Это дало тот же результат.
Я ожидаю, что в моей DNS-зоне Azure будет создана запись TXT, содержащая имя, в моем случае _acme-challenge, и значение, которое является токен, связанный с этой задачей.

Подробнее здесь: https://stackoverflow.com/questions/785 ... e-rest-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»