Я пытаюсь создать новое правило брандмауэра. У меня нет проблем с обновлением существующих правил, но я не могу создать новый. Я получаю true statusCode в ответ, но не вижу результата на портале Azure (через несколько минут). Приложенный код относится к веб-приложению с проприетарной ролью в ресурсе группы MySql. Что я делаю неправильно?
private static string URI_FIREWALL_BASE = "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/MY_RESOURCE/providers/Microsoft.DBforMySQL/servers/MYSERVER/firewallRules/";
public string AddIPFirewallRule(string email, string IP)
{
AuthenticationResult token = AsyncContext.Run(() => AzureActiveDirectory.GetS2SAccessTokenForProdMSAAsync());
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
JObject NewRule =
new JObject(
new JProperty("properties",
new JObject(
new JProperty("startIpAddress", IP),
new JProperty("endIpAddress", IP)
)));
var content = JsonConvert.SerializeObject(NewRule);
var httpContent = new StringContent(content, Encoding.UTF8, "application/json");
HttpResponseMessage resp = AsyncContext.Run(() => client.PutAsync(URI_FIREWALL_BASE + $"{email}?api-version=2017-12-01", httpContent));
return AsyncContext.Run(() => resp.Content.ReadAsStringAsync());
}
Наконец то я понял. Я должен следовать некоторым правилам, чтобы назвать новую услугу, как вы можете видеть, что делаете то же самое вручную на Azure Portal Desktop.